billion-context 0.1.203 → 0.1.204
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/CONFIGURATION.md +36 -1
- package/CONFIGURATION.zh-CN.md +36 -1
- package/dist/agent/dsh-compaction-gate.js +3 -0
- package/dist/agent/dsh-native.js +5 -5
- package/dist/agent/omp-native.js +2 -2
- package/dist/agent/omp.js +1 -1
- package/dist/agent/opencode-native.js +2 -2
- package/dist/agent/opencode.js +2 -2
- package/dist/agent/pi-native.js +24 -22
- package/dist/agent/pi.js +1 -1
- package/dist/build-info.json +1 -1
- package/dist/claude-mcp-entry.js +1 -1
- package/dist/claude-native-bootstrap.js +1 -1
- package/dist/index.js +34 -30
- package/dist/kimi/bootstrap-hook.js +1 -1
- package/dist/kimi/native-mcp.js +1 -1
- package/dist/zcode/bootstrap-hook.js +1 -1
- package/dist/zcode/mcp-entry.js +1 -1
- package/dsh.bundle.patch.yml +12 -3
- package/package.json +2 -1
package/dist/agent/omp-native.js
CHANGED
|
@@ -122,12 +122,12 @@ ${pendingInterceptorsFormatter.format(pending)}`.trim())}};module.exports=MockAg
|
|
|
122
122
|
)
|
|
123
123
|
`)}close(){this.#db.close()}get(key){assertCacheKey(key);const value=this.#findValue(key);return value?{body:value.body?Buffer.from(value.body.buffer,value.body.byteOffset,value.body.byteLength):void 0,statusCode:value.statusCode,statusMessage:value.statusMessage,headers:value.headers?JSON.parse(value.headers):void 0,etag:value.etag?value.etag:void 0,vary:value.vary?JSON.parse(value.vary):void 0,cacheControlDirectives:value.cacheControlDirectives?JSON.parse(value.cacheControlDirectives):void 0,cachedAt:value.cachedAt,staleAt:value.staleAt,deleteAt:value.deleteAt}:void 0}set(key,value){assertCacheKey(key);const url=this.#makeValueUrl(key);const body=Array.isArray(value.body)?Buffer.concat(value.body):value.body;const size=body?.byteLength;if(size&&size>this.#maxEntrySize){return}const existingValue=this.#findValue(key,true);if(existingValue){this.#updateValueQuery.run(body,value.deleteAt,value.statusCode,value.statusMessage,value.headers?JSON.stringify(value.headers):null,value.etag?value.etag:null,value.cacheControlDirectives?JSON.stringify(value.cacheControlDirectives):null,value.cachedAt,value.staleAt,existingValue.id)}else{this.#insertValueQuery.run(url,key.method,body,value.deleteAt,value.statusCode,value.statusMessage,value.headers?JSON.stringify(value.headers):null,value.etag?value.etag:null,value.cacheControlDirectives?JSON.stringify(value.cacheControlDirectives):null,value.vary?JSON.stringify(value.vary):null,value.cachedAt,value.staleAt);this.#prune()}}createWriteStream(key,value){assertCacheKey(key);assertCacheValue(value);let size=0;const body=[];const store=this;return new Writable({decodeStrings:true,write(chunk,encoding,callback){size+=chunk.byteLength;if(size<store.#maxEntrySize){body.push(chunk)}else{this.destroy()}callback()},final(callback){store.set(key,{...value,body});callback()}})}delete(key){if(typeof key!=="object"){throw new TypeError(`expected key to be object, got ${typeof key}`)}this.#deleteByUrlQuery.run(this.#makeValueUrl(key))}#prune(){if(Number.isFinite(this.#maxCount)&&this.size<=this.#maxCount){return 0}{const removed=this.#deleteExpiredValuesQuery.run(Date.now()).changes;if(removed){return removed}}{const removed=this.#deleteOldValuesQuery?.run(Math.max(Math.floor(this.#maxCount*.1),1)).changes;if(removed){return removed}}return 0}get size(){const{total}=this.#countEntriesQuery.get();return total}#makeValueUrl(key){return`${key.origin}/${key.path}`}#findValue(key,canBeExpired=false){const url=this.#makeValueUrl(key);const{headers,method}=key;const values=this.#getValuesQuery.all(url,method);if(values.length===0){return void 0}const now=Date.now();for(const value of values){if(now>=value.deleteAt&&!canBeExpired){continue}let matches=true;if(value.vary){const vary=JSON.parse(value.vary);for(const header in vary){if(!headerValueEquals(headers[header],vary[header])){matches=false;break}}}if(matches){return value}}return void 0}};function headerValueEquals(lhs,rhs){if(lhs==null&&rhs==null){return true}if(lhs==null&&rhs!=null||lhs!=null&&rhs==null){return false}if(Array.isArray(lhs)&&Array.isArray(rhs)){if(lhs.length!==rhs.length){return false}for(let i=0;i<lhs.length;i++){if(lhs[i]!==rhs[i]){return false}}return true}return lhs===rhs}}});var require_headers=__commonJS({"node_modules/undici/lib/web/fetch/headers.js"(exports,module){"use strict";var{kConstruct}=require_symbols();var{kEnumerableProperty}=require_util2();var{iteratorMixin,isValidHeaderName,isValidHeaderValue}=require_util3();var{webidl}=require_webidl();var assert=__require("assert");var util=__require("util");function isHTTPWhiteSpaceCharCode(code){return code===10||code===13||code===9||code===32}function headerValueNormalize(potentialValue){let i=0;let j3=potentialValue.length;while(j3>i&&isHTTPWhiteSpaceCharCode(potentialValue.charCodeAt(j3-1)))--j3;while(j3>i&&isHTTPWhiteSpaceCharCode(potentialValue.charCodeAt(i)))++i;return i===0&&j3===potentialValue.length?potentialValue:potentialValue.substring(i,j3)}function fill(headers,object){if(Array.isArray(object)){for(let i=0;i<object.length;++i){const header=object[i];if(header.length!==2){throw webidl.errors.exception({header:"Headers constructor",message:`expected name/value pair to be length 2, found ${header.length}.`})}appendHeader(headers,header[0],header[1])}}else if(typeof object==="object"&&object!==null){const keys=Object.keys(object);for(let i=0;i<keys.length;++i){appendHeader(headers,keys[i],object[keys[i]])}}else{throw webidl.errors.conversionFailed({prefix:"Headers constructor",argument:"Argument 1",types:["sequence<sequence<ByteString>>","record<ByteString, ByteString>"]})}}function appendHeader(headers,name,value){value=headerValueNormalize(value);if(!isValidHeaderName(name)){throw webidl.errors.invalidArgument({prefix:"Headers.append",value:name,type:"header name"})}else if(!isValidHeaderValue(value)){throw webidl.errors.invalidArgument({prefix:"Headers.append",value,type:"header value"})}if(getHeadersGuard(headers)==="immutable"){throw new TypeError("immutable")}return getHeadersList(headers).append(name,value,false)}function headersListSortAndCombine(target){const headersList=getHeadersList(target);if(!headersList){return[]}if(headersList.sortedMap){return headersList.sortedMap}const headers=[];const names=headersList.toSortedArray();const cookies=headersList.cookies;if(cookies===null||cookies.length===1){return headersList.sortedMap=names}for(let i=0;i<names.length;++i){const{0:name,1:value}=names[i];if(name==="set-cookie"){for(let j3=0;j3<cookies.length;++j3){headers.push([name,cookies[j3]])}}else{headers.push([name,value])}}return headersList.sortedMap=headers}function compareHeaderName(a,b3){return a[0]<b3[0]?-1:1}var HeadersList=class _HeadersList{cookies=null;sortedMap;headersMap;constructor(init){if(init instanceof _HeadersList){this.headersMap=new Map(init.headersMap);this.sortedMap=init.sortedMap;this.cookies=init.cookies===null?null:[...init.cookies]}else{this.headersMap=new Map(init);this.sortedMap=null}}contains(name,isLowerCase){return this.headersMap.has(isLowerCase?name:name.toLowerCase())}clear(){this.headersMap.clear();this.sortedMap=null;this.cookies=null}append(name,value,isLowerCase){this.sortedMap=null;const lowercaseName=isLowerCase?name:name.toLowerCase();const exists=this.headersMap.get(lowercaseName);if(exists){const delimiter=lowercaseName==="cookie"?"; ":", ";this.headersMap.set(lowercaseName,{name:exists.name,value:`${exists.value}${delimiter}${value}`})}else{this.headersMap.set(lowercaseName,{name,value})}if(lowercaseName==="set-cookie"){(this.cookies??=[]).push(value)}}set(name,value,isLowerCase){this.sortedMap=null;const lowercaseName=isLowerCase?name:name.toLowerCase();if(lowercaseName==="set-cookie"){this.cookies=[value]}this.headersMap.set(lowercaseName,{name,value})}delete(name,isLowerCase){this.sortedMap=null;if(!isLowerCase)name=name.toLowerCase();if(name==="set-cookie"){this.cookies=null}this.headersMap.delete(name)}get(name,isLowerCase){return this.headersMap.get(isLowerCase?name:name.toLowerCase())?.value??null}*[Symbol.iterator](){for(const{0:name,1:{value}}of this.headersMap){yield[name,value]}}get entries(){const headers={};if(this.headersMap.size!==0){for(const{name,value}of this.headersMap.values()){headers[name]=value}}return headers}rawValues(){return this.headersMap.values()}get entriesList(){const headers=[];if(this.headersMap.size!==0){for(const{0:lowerName,1:{name,value}}of this.headersMap){if(lowerName==="set-cookie"){for(const cookie of this.cookies){headers.push([name,cookie])}}else{headers.push([name,value])}}}return headers}toSortedArray(){const size=this.headersMap.size;const array=new Array(size);if(size<=32){if(size===0){return array}const iterator=this.headersMap[Symbol.iterator]();const firstValue=iterator.next().value;array[0]=[firstValue[0],firstValue[1].value];assert(firstValue[1].value!==null);for(let i=1,j3=0,right=0,left=0,pivot=0,x2,value;i<size;++i){value=iterator.next().value;x2=array[i]=[value[0],value[1].value];assert(x2[1]!==null);left=0;right=i;while(left<right){pivot=left+(right-left>>1);if(array[pivot][0]<=x2[0]){left=pivot+1}else{right=pivot}}if(i!==pivot){j3=i;while(j3>left){array[j3]=array[--j3]}array[left]=x2}}if(!iterator.next().done){throw new TypeError("Unreachable")}return array}else{let i=0;for(const{0:name,1:{value}}of this.headersMap){array[i++]=[name,value];assert(value!==null)}return array.sort(compareHeaderName)}}};var Headers2=class _Headers{#guard;#headersList;constructor(init=void 0){webidl.util.markAsUncloneable(this);if(init===kConstruct){return}this.#headersList=new HeadersList;this.#guard="none";if(init!==void 0){init=webidl.converters.HeadersInit(init,"Headers constructor","init");fill(this,init)}}append(name,value){webidl.brandCheck(this,_Headers);webidl.argumentLengthCheck(arguments,2,"Headers.append");const prefix="Headers.append";name=webidl.converters.ByteString(name,prefix,"name");value=webidl.converters.ByteString(value,prefix,"value");return appendHeader(this,name,value)}delete(name){webidl.brandCheck(this,_Headers);webidl.argumentLengthCheck(arguments,1,"Headers.delete");const prefix="Headers.delete";name=webidl.converters.ByteString(name,prefix,"name");if(!isValidHeaderName(name)){throw webidl.errors.invalidArgument({prefix:"Headers.delete",value:name,type:"header name"})}if(this.#guard==="immutable"){throw new TypeError("immutable")}if(!this.#headersList.contains(name,false)){return}this.#headersList.delete(name,false)}get(name){webidl.brandCheck(this,_Headers);webidl.argumentLengthCheck(arguments,1,"Headers.get");const prefix="Headers.get";name=webidl.converters.ByteString(name,prefix,"name");if(!isValidHeaderName(name)){throw webidl.errors.invalidArgument({prefix,value:name,type:"header name"})}return this.#headersList.get(name,false)}has(name){webidl.brandCheck(this,_Headers);webidl.argumentLengthCheck(arguments,1,"Headers.has");const prefix="Headers.has";name=webidl.converters.ByteString(name,prefix,"name");if(!isValidHeaderName(name)){throw webidl.errors.invalidArgument({prefix,value:name,type:"header name"})}return this.#headersList.contains(name,false)}set(name,value){webidl.brandCheck(this,_Headers);webidl.argumentLengthCheck(arguments,2,"Headers.set");const prefix="Headers.set";name=webidl.converters.ByteString(name,prefix,"name");value=webidl.converters.ByteString(value,prefix,"value");value=headerValueNormalize(value);if(!isValidHeaderName(name)){throw webidl.errors.invalidArgument({prefix,value:name,type:"header name"})}else if(!isValidHeaderValue(value)){throw webidl.errors.invalidArgument({prefix,value,type:"header value"})}if(this.#guard==="immutable"){throw new TypeError("immutable")}this.#headersList.set(name,value,false)}getSetCookie(){webidl.brandCheck(this,_Headers);const list=this.#headersList.cookies;if(list){return[...list]}return[]}[util.inspect.custom](depth,options){options.depth??=depth;return`Headers ${util.formatWithOptions(options,this.#headersList.entries)}`}static getHeadersGuard(o){return o.#guard}static setHeadersGuard(o,guard){o.#guard=guard}static getHeadersList(o){return o.#headersList}static setHeadersList(target,list){target.#headersList=list}};var{getHeadersGuard,setHeadersGuard,getHeadersList,setHeadersList}=Headers2;Reflect.deleteProperty(Headers2,"getHeadersGuard");Reflect.deleteProperty(Headers2,"setHeadersGuard");Reflect.deleteProperty(Headers2,"getHeadersList");Reflect.deleteProperty(Headers2,"setHeadersList");iteratorMixin("Headers",Headers2,headersListSortAndCombine,0,1);Object.defineProperties(Headers2.prototype,{append:kEnumerableProperty,delete:kEnumerableProperty,get:kEnumerableProperty,has:kEnumerableProperty,set:kEnumerableProperty,getSetCookie:kEnumerableProperty,[Symbol.toStringTag]:{value:"Headers",configurable:true},[util.inspect.custom]:{enumerable:false}});webidl.converters.HeadersInit=function(V3,prefix,argument){if(webidl.util.Type(V3)===webidl.util.Types.OBJECT){const iterator=Reflect.get(V3,Symbol.iterator);if(!util.types.isProxy(V3)&&iterator===Headers2.prototype.entries){try{return getHeadersList(V3).entriesList}catch{}}if(typeof iterator==="function"){return webidl.converters["sequence<sequence<ByteString>>"](V3,prefix,argument,iterator.bind(V3))}return webidl.converters["record<ByteString, ByteString>"](V3,prefix,argument)}throw webidl.errors.conversionFailed({prefix:"Headers constructor",argument:"Argument 1",types:["sequence<sequence<ByteString>>","record<ByteString, ByteString>"]})};module.exports={fill,compareHeaderName,Headers:Headers2,HeadersList,getHeadersGuard,setHeadersGuard,setHeadersList,getHeadersList}}});var require_response=__commonJS({"node_modules/undici/lib/web/fetch/response.js"(exports,module){"use strict";var{Headers:Headers2,HeadersList,fill,getHeadersGuard,setHeadersGuard,setHeadersList}=require_headers();var{extractBody,cloneBody,mixinBody,streamRegistry,bodyUnusable}=require_body();var util=require_util2();var nodeUtil=__require("util");var{kEnumerableProperty}=util;var{isValidReasonPhrase,isCancelled,isAborted,isErrorLike,environmentSettingsObject:relevantRealm}=require_util3();var{redirectStatusSet,nullBodyStatus}=require_constants3();var{webidl}=require_webidl();var{URLSerializer}=require_data_url();var{kConstruct}=require_symbols();var assert=__require("assert");var{isomorphicEncode,serializeJavascriptValueToJSONString}=require_infra();var textEncoder=new TextEncoder("utf-8");var Response2=class _Response{#headers;#state;static error(){const responseObject=fromInnerResponse(makeNetworkError(),"immutable");return responseObject}static json(data,init=void 0){webidl.argumentLengthCheck(arguments,1,"Response.json");if(init!==null){init=webidl.converters.ResponseInit(init)}const bytes=textEncoder.encode(serializeJavascriptValueToJSONString(data));const body=extractBody(bytes);const responseObject=fromInnerResponse(makeResponse({}),"response");initializeResponse(responseObject,init,{body:body[0],type:"application/json"});return responseObject}static redirect(url,status=302){webidl.argumentLengthCheck(arguments,1,"Response.redirect");url=webidl.converters.USVString(url);status=webidl.converters["unsigned short"](status);let parsedURL;try{parsedURL=new URL(url,relevantRealm.settingsObject.baseUrl)}catch(err){throw new TypeError(`Failed to parse URL from ${url}`,{cause:err})}if(!redirectStatusSet.has(status)){throw new RangeError(`Invalid status code ${status}`)}const responseObject=fromInnerResponse(makeResponse({}),"immutable");responseObject.#state.status=status;const value=isomorphicEncode(URLSerializer(parsedURL));responseObject.#state.headersList.append("location",value,true);return responseObject}constructor(body=null,init=void 0){webidl.util.markAsUncloneable(this);if(body===kConstruct){return}if(body!==null){body=webidl.converters.BodyInit(body,"Response","body")}init=webidl.converters.ResponseInit(init);this.#state=makeResponse({});this.#headers=new Headers2(kConstruct);setHeadersGuard(this.#headers,"response");setHeadersList(this.#headers,this.#state.headersList);let bodyWithType=null;if(body!=null){const[extractedBody,type]=extractBody(body);bodyWithType={body:extractedBody,type}}initializeResponse(this,init,bodyWithType)}get type(){webidl.brandCheck(this,_Response);return this.#state.type}get url(){webidl.brandCheck(this,_Response);const urlList=this.#state.urlList;const url=urlList[urlList.length-1]??null;if(url===null){return""}return URLSerializer(url,true)}get redirected(){webidl.brandCheck(this,_Response);return this.#state.urlList.length>1}get status(){webidl.brandCheck(this,_Response);return this.#state.status}get ok(){webidl.brandCheck(this,_Response);return this.#state.status>=200&&this.#state.status<=299}get statusText(){webidl.brandCheck(this,_Response);return this.#state.statusText}get headers(){webidl.brandCheck(this,_Response);return this.#headers}get body(){webidl.brandCheck(this,_Response);return this.#state.body?this.#state.body.stream:null}get bodyUsed(){webidl.brandCheck(this,_Response);return!!this.#state.body&&util.isDisturbed(this.#state.body.stream)}clone(){webidl.brandCheck(this,_Response);if(bodyUnusable(this.#state)){throw webidl.errors.exception({header:"Response.clone",message:"Body has already been consumed."})}const clonedResponse=cloneResponse(this.#state);if(this.#state.urlList.length!==0&&this.#state.body?.stream){streamRegistry.register(this,new WeakRef(this.#state.body.stream))}return fromInnerResponse(clonedResponse,getHeadersGuard(this.#headers))}[nodeUtil.inspect.custom](depth,options){if(options.depth===null){options.depth=2}options.colors??=true;const properties={status:this.status,statusText:this.statusText,headers:this.headers,body:this.body,bodyUsed:this.bodyUsed,ok:this.ok,redirected:this.redirected,type:this.type,url:this.url};return`Response ${nodeUtil.formatWithOptions(options,properties)}`}static getResponseHeaders(response){return response.#headers}static setResponseHeaders(response,newHeaders){response.#headers=newHeaders}static getResponseState(response){return response.#state}static setResponseState(response,newState){response.#state=newState}};var{getResponseHeaders,setResponseHeaders,getResponseState,setResponseState}=Response2;Reflect.deleteProperty(Response2,"getResponseHeaders");Reflect.deleteProperty(Response2,"setResponseHeaders");Reflect.deleteProperty(Response2,"getResponseState");Reflect.deleteProperty(Response2,"setResponseState");mixinBody(Response2,getResponseState);Object.defineProperties(Response2.prototype,{type:kEnumerableProperty,url:kEnumerableProperty,status:kEnumerableProperty,ok:kEnumerableProperty,redirected:kEnumerableProperty,statusText:kEnumerableProperty,headers:kEnumerableProperty,clone:kEnumerableProperty,body:kEnumerableProperty,bodyUsed:kEnumerableProperty,[Symbol.toStringTag]:{value:"Response",configurable:true}});Object.defineProperties(Response2,{json:kEnumerableProperty,redirect:kEnumerableProperty,error:kEnumerableProperty});function cloneResponse(response){if(response.internalResponse){return filterResponse(cloneResponse(response.internalResponse),response.type)}const newResponse=makeResponse({...response,body:null});if(response.body!=null){newResponse.body=cloneBody(response.body)}return newResponse}function makeResponse(init){return{aborted:false,rangeRequested:false,timingAllowPassed:false,requestIncludesCredentials:false,type:"default",status:200,timingInfo:null,cacheState:"",statusText:"",...init,headersList:init?.headersList?new HeadersList(init?.headersList):new HeadersList,urlList:init?.urlList?[...init.urlList]:[]}}function makeNetworkError(reason){const isError=isErrorLike(reason);return makeResponse({type:"error",status:0,error:isError?reason:new Error(reason?String(reason):reason),aborted:reason&&reason.name==="AbortError"})}function isNetworkError(response){return response.type==="error"&&response.status===0}function makeFilteredResponse(response,state3){state3={internalResponse:response,...state3};return new Proxy(response,{get(target,p2){return p2 in state3?state3[p2]:target[p2]},set(target,p2,value){assert(!(p2 in state3));target[p2]=value;return true}})}function filterResponse(response,type){if(type==="basic"){return makeFilteredResponse(response,{type:"basic",headersList:response.headersList})}else if(type==="cors"){return makeFilteredResponse(response,{type:"cors",headersList:response.headersList})}else if(type==="opaque"){return makeFilteredResponse(response,{type:"opaque",urlList:[],status:0,statusText:"",body:null})}else if(type==="opaqueredirect"){return makeFilteredResponse(response,{type:"opaqueredirect",status:0,statusText:"",headersList:[],body:null})}else{assert(false)}}function makeAppropriateNetworkError(fetchParams,err=null){assert(isCancelled(fetchParams));return isAborted(fetchParams)?makeNetworkError(Object.assign(new DOMException("The operation was aborted.","AbortError"),{cause:err})):makeNetworkError(Object.assign(new DOMException("Request was cancelled."),{cause:err}))}function initializeResponse(response,init,body){if(init.status!==null&&(init.status<200||init.status>599)){throw new RangeError('init["status"] must be in the range of 200 to 599, inclusive.')}if("statusText"in init&&init.statusText!=null){if(!isValidReasonPhrase(String(init.statusText))){throw new TypeError("Invalid statusText")}}if("status"in init&&init.status!=null){getResponseState(response).status=init.status}if("statusText"in init&&init.statusText!=null){getResponseState(response).statusText=init.statusText}if("headers"in init&&init.headers!=null){fill(getResponseHeaders(response),init.headers)}if(body){if(nullBodyStatus.includes(response.status)){throw webidl.errors.exception({header:"Response constructor",message:`Invalid response status code ${response.status}`})}getResponseState(response).body=body.body;if(body.type!=null&&!getResponseState(response).headersList.contains("content-type",true)){getResponseState(response).headersList.append("content-type",body.type,true)}}}function fromInnerResponse(innerResponse,guard){const response=new Response2(kConstruct);setResponseState(response,innerResponse);const headers=new Headers2(kConstruct);setResponseHeaders(response,headers);setHeadersList(headers,innerResponse.headersList);setHeadersGuard(headers,guard);if(innerResponse.urlList.length!==0&&innerResponse.body?.stream){streamRegistry.register(response,new WeakRef(innerResponse.body.stream))}return response}webidl.converters.XMLHttpRequestBodyInit=function(V3,prefix,name){if(typeof V3==="string"){return webidl.converters.USVString(V3,prefix,name)}if(webidl.is.Blob(V3)){return V3}if(webidl.is.BufferSource(V3)){return V3}if(webidl.is.FormData(V3)){return V3}if(webidl.is.URLSearchParams(V3)){return V3}return webidl.converters.DOMString(V3,prefix,name)};webidl.converters.BodyInit=function(V3,prefix,argument){if(webidl.is.ReadableStream(V3)){return V3}if(V3?.[Symbol.asyncIterator]){return V3}return webidl.converters.XMLHttpRequestBodyInit(V3,prefix,argument)};webidl.converters.ResponseInit=webidl.dictionaryConverter([{key:"status",converter:webidl.converters["unsigned short"],defaultValue:()=>200},{key:"statusText",converter:webidl.converters.ByteString,defaultValue:()=>""},{key:"headers",converter:webidl.converters.HeadersInit}]);webidl.is.Response=webidl.util.MakeTypeAssertion(Response2);module.exports={isNetworkError,makeNetworkError,makeResponse,makeAppropriateNetworkError,filterResponse,Response:Response2,cloneResponse,fromInnerResponse,getResponseState}}});var require_request2=__commonJS({"node_modules/undici/lib/web/fetch/request.js"(exports,module){"use strict";var{extractBody,mixinBody,cloneBody,bodyUnusable}=require_body();var{Headers:Headers2,fill:fillHeaders,HeadersList,setHeadersGuard,getHeadersGuard,setHeadersList,getHeadersList}=require_headers();var util=require_util2();var nodeUtil=__require("util");var{isValidHTTPToken,sameOrigin,environmentSettingsObject}=require_util3();var{forbiddenMethodsSet,corsSafeListedMethodsSet,referrerPolicy,requestRedirect,requestMode,requestCredentials,requestCache,requestDuplex}=require_constants3();var{kEnumerableProperty,normalizedMethodRecordsBase,normalizedMethodRecords}=util;var{webidl}=require_webidl();var{URLSerializer}=require_data_url();var{kConstruct}=require_symbols();var assert=__require("assert");var{getMaxListeners,setMaxListeners,defaultMaxListeners}=__require("events");var kAbortController=Symbol("abortController");var requestFinalizer=new FinalizationRegistry(({signal,abort})=>{signal.removeEventListener("abort",abort)});var dependentControllerMap=new WeakMap;var abortSignalHasEventHandlerLeakWarning;try{abortSignalHasEventHandlerLeakWarning=getMaxListeners(new AbortController().signal)>0}catch{abortSignalHasEventHandlerLeakWarning=false}function buildAbort(acRef){return abort;function abort(){const ac=acRef.deref();if(ac!==void 0){requestFinalizer.unregister(abort);this.removeEventListener("abort",abort);ac.abort(this.reason);const controllerList=dependentControllerMap.get(ac.signal);if(controllerList!==void 0){if(controllerList.size!==0){for(const ref of controllerList){const ctrl=ref.deref();if(ctrl!==void 0){ctrl.abort(this.reason)}}controllerList.clear()}dependentControllerMap.delete(ac.signal)}}}}var patchMethodWarning=false;var Request2=class _Request{#signal;#dispatcher;#headers;#state;constructor(input,init=void 0){webidl.util.markAsUncloneable(this);if(input===kConstruct){return}const prefix="Request constructor";webidl.argumentLengthCheck(arguments,1,prefix);input=webidl.converters.RequestInfo(input);init=webidl.converters.RequestInit(init);let request=null;let fallbackMode=null;const baseUrl=environmentSettingsObject.settingsObject.baseUrl;let signal=null;if(typeof input==="string"){this.#dispatcher=init.dispatcher;let parsedURL;try{parsedURL=new URL(input,baseUrl)}catch(err){throw new TypeError("Failed to parse URL from "+input,{cause:err})}if(parsedURL.username||parsedURL.password){throw new TypeError("Request cannot be constructed from a URL that includes credentials: "+input)}request=makeRequest({urlList:[parsedURL]});fallbackMode="cors"}else{assert(webidl.is.Request(input));request=input.#state;signal=input.#signal;this.#dispatcher=init.dispatcher||input.#dispatcher}const origin=environmentSettingsObject.settingsObject.origin;let window2="client";if(request.window?.constructor?.name==="EnvironmentSettingsObject"&&sameOrigin(request.window,origin)){window2=request.window}if(init.window!=null){throw new TypeError(`'window' option '${window2}' must be null`)}if("window"in init){window2="no-window"}request=makeRequest({method:request.method,headersList:request.headersList,unsafeRequest:request.unsafeRequest,client:environmentSettingsObject.settingsObject,window:window2,priority:request.priority,origin:request.origin,referrer:request.referrer,referrerPolicy:request.referrerPolicy,mode:request.mode,credentials:request.credentials,cache:request.cache,redirect:request.redirect,integrity:request.integrity,keepalive:request.keepalive,reloadNavigation:request.reloadNavigation,historyNavigation:request.historyNavigation,urlList:[...request.urlList]});const initHasKey=Object.keys(init).length!==0;if(initHasKey){if(request.mode==="navigate"){request.mode="same-origin"}request.reloadNavigation=false;request.historyNavigation=false;request.origin="client";request.referrer="client";request.referrerPolicy="";request.url=request.urlList[request.urlList.length-1];request.urlList=[request.url]}if(init.referrer!==void 0){const referrer=init.referrer;if(referrer===""){request.referrer="no-referrer"}else{let parsedReferrer;try{parsedReferrer=new URL(referrer,baseUrl)}catch(err){throw new TypeError(`Referrer "${referrer}" is not a valid URL.`,{cause:err})}if(parsedReferrer.protocol==="about:"&&parsedReferrer.hostname==="client"||origin&&!sameOrigin(parsedReferrer,environmentSettingsObject.settingsObject.baseUrl)){request.referrer="client"}else{request.referrer=parsedReferrer}}}if(init.referrerPolicy!==void 0){request.referrerPolicy=init.referrerPolicy}let mode;if(init.mode!==void 0){mode=init.mode}else{mode=fallbackMode}if(mode==="navigate"){throw webidl.errors.exception({header:"Request constructor",message:"invalid request mode navigate."})}if(mode!=null){request.mode=mode}if(init.credentials!==void 0){request.credentials=init.credentials}if(init.cache!==void 0){request.cache=init.cache}if(request.cache==="only-if-cached"&&request.mode!=="same-origin"){throw new TypeError("'only-if-cached' can be set only with 'same-origin' mode")}if(init.redirect!==void 0){request.redirect=init.redirect}if(init.integrity!=null){request.integrity=String(init.integrity)}if(init.keepalive!==void 0){request.keepalive=Boolean(init.keepalive)}if(init.method!==void 0){let method=init.method;const mayBeNormalized=normalizedMethodRecords[method];if(mayBeNormalized!==void 0){request.method=mayBeNormalized}else{if(!isValidHTTPToken(method)){throw new TypeError(`'${method}' is not a valid HTTP method.`)}const upperCase=method.toUpperCase();if(forbiddenMethodsSet.has(upperCase)){throw new TypeError(`'${method}' HTTP method is unsupported.`)}method=normalizedMethodRecordsBase[upperCase]??method;request.method=method}if(!patchMethodWarning&&request.method==="patch"){process.emitWarning("Using `patch` is highly likely to result in a `405 Method Not Allowed`. `PATCH` is much more likely to succeed.",{code:"UNDICI-FETCH-patch"});patchMethodWarning=true}}if(init.signal!==void 0){signal=init.signal}this.#state=request;const ac=new AbortController;this.#signal=ac.signal;if(signal!=null){if(signal.aborted){ac.abort(signal.reason)}else{this[kAbortController]=ac;const acRef=new WeakRef(ac);const abort=buildAbort(acRef);if(abortSignalHasEventHandlerLeakWarning&&getMaxListeners(signal)===defaultMaxListeners){setMaxListeners(1500,signal)}util.addAbortListener(signal,abort);requestFinalizer.register(ac,{signal,abort},abort)}}this.#headers=new Headers2(kConstruct);setHeadersList(this.#headers,request.headersList);setHeadersGuard(this.#headers,"request");if(mode==="no-cors"){if(!corsSafeListedMethodsSet.has(request.method)){throw new TypeError(`'${request.method} is unsupported in no-cors mode.`)}setHeadersGuard(this.#headers,"request-no-cors")}if(initHasKey){const headersList=getHeadersList(this.#headers);const headers=init.headers!==void 0?init.headers:new HeadersList(headersList);headersList.clear();if(headers instanceof HeadersList){for(const{name,value}of headers.rawValues()){headersList.append(name,value,false)}headersList.cookies=headers.cookies}else{fillHeaders(this.#headers,headers)}}const inputBody=webidl.is.Request(input)?input.#state.body:null;if((init.body!=null||inputBody!=null)&&(request.method==="GET"||request.method==="HEAD")){throw new TypeError("Request with GET/HEAD method cannot have body.")}let initBody=null;if(init.body!=null){const[extractedBody,contentType]=extractBody(init.body,request.keepalive);initBody=extractedBody;if(contentType&&!getHeadersList(this.#headers).contains("content-type",true)){this.#headers.append("content-type",contentType,true)}}const inputOrInitBody=initBody??inputBody;if(inputOrInitBody!=null&&inputOrInitBody.source==null){if(initBody!=null&&init.duplex==null){throw new TypeError("RequestInit: duplex option is required when sending a body.")}if(request.mode!=="same-origin"&&request.mode!=="cors"){throw new TypeError('If request is made from ReadableStream, mode should be "same-origin" or "cors"')}request.useCORSPreflightFlag=true}let finalBody=inputOrInitBody;if(initBody==null&&inputBody!=null){if(bodyUnusable(input.#state)){throw new TypeError("Cannot construct a Request with a Request object that has already been used.")}const identityTransform=new TransformStream;inputBody.stream.pipeThrough(identityTransform);finalBody={source:inputBody.source,length:inputBody.length,stream:identityTransform.readable}}this.#state.body=finalBody}get method(){webidl.brandCheck(this,_Request);return this.#state.method}get url(){webidl.brandCheck(this,_Request);return URLSerializer(this.#state.url)}get headers(){webidl.brandCheck(this,_Request);return this.#headers}get destination(){webidl.brandCheck(this,_Request);return this.#state.destination}get referrer(){webidl.brandCheck(this,_Request);if(this.#state.referrer==="no-referrer"){return""}if(this.#state.referrer==="client"){return"about:client"}return this.#state.referrer.toString()}get referrerPolicy(){webidl.brandCheck(this,_Request);return this.#state.referrerPolicy}get mode(){webidl.brandCheck(this,_Request);return this.#state.mode}get credentials(){webidl.brandCheck(this,_Request);return this.#state.credentials}get cache(){webidl.brandCheck(this,_Request);return this.#state.cache}get redirect(){webidl.brandCheck(this,_Request);return this.#state.redirect}get integrity(){webidl.brandCheck(this,_Request);return this.#state.integrity}get keepalive(){webidl.brandCheck(this,_Request);return this.#state.keepalive}get isReloadNavigation(){webidl.brandCheck(this,_Request);return this.#state.reloadNavigation}get isHistoryNavigation(){webidl.brandCheck(this,_Request);return this.#state.historyNavigation}get signal(){webidl.brandCheck(this,_Request);return this.#signal}get body(){webidl.brandCheck(this,_Request);return this.#state.body?this.#state.body.stream:null}get bodyUsed(){webidl.brandCheck(this,_Request);return!!this.#state.body&&util.isDisturbed(this.#state.body.stream)}get duplex(){webidl.brandCheck(this,_Request);return"half"}clone(){webidl.brandCheck(this,_Request);if(bodyUnusable(this.#state)){throw new TypeError("unusable")}const clonedRequest=cloneRequest(this.#state);const ac=new AbortController;if(this.signal.aborted){ac.abort(this.signal.reason)}else{let list=dependentControllerMap.get(this.signal);if(list===void 0){list=new Set;dependentControllerMap.set(this.signal,list)}const acRef=new WeakRef(ac);list.add(acRef);util.addAbortListener(ac.signal,buildAbort(acRef))}return fromInnerRequest(clonedRequest,this.#dispatcher,ac.signal,getHeadersGuard(this.#headers))}[nodeUtil.inspect.custom](depth,options){if(options.depth===null){options.depth=2}options.colors??=true;const properties={method:this.method,url:this.url,headers:this.headers,destination:this.destination,referrer:this.referrer,referrerPolicy:this.referrerPolicy,mode:this.mode,credentials:this.credentials,cache:this.cache,redirect:this.redirect,integrity:this.integrity,keepalive:this.keepalive,isReloadNavigation:this.isReloadNavigation,isHistoryNavigation:this.isHistoryNavigation,signal:this.signal};return`Request ${nodeUtil.formatWithOptions(options,properties)}`}static setRequestSignal(request,newSignal){request.#signal=newSignal;return request}static getRequestDispatcher(request){return request.#dispatcher}static setRequestDispatcher(request,newDispatcher){request.#dispatcher=newDispatcher}static setRequestHeaders(request,newHeaders){request.#headers=newHeaders}static getRequestState(request){return request.#state}static setRequestState(request,newState){request.#state=newState}};var{setRequestSignal,getRequestDispatcher,setRequestDispatcher,setRequestHeaders,getRequestState,setRequestState}=Request2;Reflect.deleteProperty(Request2,"setRequestSignal");Reflect.deleteProperty(Request2,"getRequestDispatcher");Reflect.deleteProperty(Request2,"setRequestDispatcher");Reflect.deleteProperty(Request2,"setRequestHeaders");Reflect.deleteProperty(Request2,"getRequestState");Reflect.deleteProperty(Request2,"setRequestState");mixinBody(Request2,getRequestState);function makeRequest(init){return{method:init.method??"GET",localURLsOnly:init.localURLsOnly??false,unsafeRequest:init.unsafeRequest??false,body:init.body??null,client:init.client??null,reservedClient:init.reservedClient??null,replacesClientId:init.replacesClientId??"",window:init.window??"client",keepalive:init.keepalive??false,serviceWorkers:init.serviceWorkers??"all",initiator:init.initiator??"",destination:init.destination??"",priority:init.priority??null,origin:init.origin??"client",policyContainer:init.policyContainer??"client",referrer:init.referrer??"client",referrerPolicy:init.referrerPolicy??"",mode:init.mode??"no-cors",useCORSPreflightFlag:init.useCORSPreflightFlag??false,credentials:init.credentials??"same-origin",useCredentials:init.useCredentials??false,cache:init.cache??"default",redirect:init.redirect??"follow",integrity:init.integrity??"",cryptoGraphicsNonceMetadata:init.cryptoGraphicsNonceMetadata??"",parserMetadata:init.parserMetadata??"",reloadNavigation:init.reloadNavigation??false,historyNavigation:init.historyNavigation??false,userActivation:init.userActivation??false,taintedOrigin:init.taintedOrigin??false,redirectCount:init.redirectCount??0,responseTainting:init.responseTainting??"basic",preventNoCacheCacheControlHeaderModification:init.preventNoCacheCacheControlHeaderModification??false,done:init.done??false,timingAllowFailed:init.timingAllowFailed??false,useURLCredentials:init.useURLCredentials??void 0,traversableForUserPrompts:init.traversableForUserPrompts??"client",urlList:init.urlList,url:init.urlList[0],headersList:init.headersList?new HeadersList(init.headersList):new HeadersList}}function cloneRequest(request){const newRequest=makeRequest({...request,body:null});if(request.body!=null){newRequest.body=cloneBody(request.body)}return newRequest}function fromInnerRequest(innerRequest,dispatcher,signal,guard){const request=new Request2(kConstruct);setRequestState(request,innerRequest);setRequestDispatcher(request,dispatcher);setRequestSignal(request,signal);const headers=new Headers2(kConstruct);setRequestHeaders(request,headers);setHeadersList(headers,innerRequest.headersList);setHeadersGuard(headers,guard);return request}Object.defineProperties(Request2.prototype,{method:kEnumerableProperty,url:kEnumerableProperty,headers:kEnumerableProperty,redirect:kEnumerableProperty,clone:kEnumerableProperty,signal:kEnumerableProperty,duplex:kEnumerableProperty,destination:kEnumerableProperty,body:kEnumerableProperty,bodyUsed:kEnumerableProperty,isHistoryNavigation:kEnumerableProperty,isReloadNavigation:kEnumerableProperty,keepalive:kEnumerableProperty,integrity:kEnumerableProperty,cache:kEnumerableProperty,credentials:kEnumerableProperty,attribute:kEnumerableProperty,referrerPolicy:kEnumerableProperty,referrer:kEnumerableProperty,mode:kEnumerableProperty,[Symbol.toStringTag]:{value:"Request",configurable:true}});webidl.is.Request=webidl.util.MakeTypeAssertion(Request2);webidl.converters.RequestInfo=function(V3){if(typeof V3==="string"){return webidl.converters.USVString(V3)}if(webidl.is.Request(V3)){return V3}return webidl.converters.USVString(V3)};webidl.converters.RequestInit=webidl.dictionaryConverter([{key:"method",converter:webidl.converters.ByteString},{key:"headers",converter:webidl.converters.HeadersInit},{key:"body",converter:webidl.nullableConverter(webidl.converters.BodyInit)},{key:"referrer",converter:webidl.converters.USVString},{key:"referrerPolicy",converter:webidl.converters.DOMString,allowedValues:referrerPolicy},{key:"mode",converter:webidl.converters.DOMString,allowedValues:requestMode},{key:"credentials",converter:webidl.converters.DOMString,allowedValues:requestCredentials},{key:"cache",converter:webidl.converters.DOMString,allowedValues:requestCache},{key:"redirect",converter:webidl.converters.DOMString,allowedValues:requestRedirect},{key:"integrity",converter:webidl.converters.DOMString},{key:"keepalive",converter:webidl.converters.boolean},{key:"signal",converter:webidl.nullableConverter(signal=>webidl.converters.AbortSignal(signal,"RequestInit","signal"))},{key:"window",converter:webidl.converters.any},{key:"duplex",converter:webidl.converters.DOMString,allowedValues:requestDuplex},{key:"dispatcher",converter:webidl.converters.any},{key:"priority",converter:webidl.converters.DOMString,allowedValues:["high","low","auto"],defaultValue:()=>"auto"}]);module.exports={Request:Request2,makeRequest,fromInnerRequest,cloneRequest,getRequestDispatcher,getRequestState}}});var require_subresource_integrity=__commonJS({"node_modules/undici/lib/web/subresource-integrity/subresource-integrity.js"(exports,module){"use strict";var assert=__require("assert");var{runtimeFeatures}=require_runtime_features();var validSRIHashAlgorithmTokenSet=new Map([["sha256",0],["sha384",1],["sha512",2]]);var crypto5;if(runtimeFeatures.has("crypto")){crypto5=__require("crypto");const cryptoHashes=crypto5.getHashes();if(cryptoHashes.length===0){validSRIHashAlgorithmTokenSet.clear()}for(const algorithm of validSRIHashAlgorithmTokenSet.keys()){if(cryptoHashes.includes(algorithm)===false){validSRIHashAlgorithmTokenSet.delete(algorithm)}}}else{validSRIHashAlgorithmTokenSet.clear()}var getSRIHashAlgorithmIndex=Map.prototype.get.bind(validSRIHashAlgorithmTokenSet);var isValidSRIHashAlgorithm=Map.prototype.has.bind(validSRIHashAlgorithmTokenSet);var bytesMatch=runtimeFeatures.has("crypto")===false||validSRIHashAlgorithmTokenSet.size===0?()=>true:(bytes,metadataList)=>{const parsedMetadata=parseMetadata(metadataList);if(parsedMetadata.length===0){return true}const metadata=getStrongestMetadata(parsedMetadata);for(const item of metadata){const algorithm=item.alg;const expectedValue=item.val;const actualValue=applyAlgorithmToBytes(algorithm,bytes);if(caseSensitiveMatch(actualValue,expectedValue)){return true}}return false};function getStrongestMetadata(metadataList){const result=[];let strongest=null;for(const item of metadataList){assert(isValidSRIHashAlgorithm(item.alg),"Invalid SRI hash algorithm token");if(result.length===0){result.push(item);strongest=item;continue}const currentAlgorithm=strongest.alg;const currentAlgorithmIndex=getSRIHashAlgorithmIndex(currentAlgorithm);const newAlgorithm=item.alg;const newAlgorithmIndex=getSRIHashAlgorithmIndex(newAlgorithm);if(newAlgorithmIndex<currentAlgorithmIndex){continue}else if(newAlgorithmIndex>currentAlgorithmIndex){strongest=item;result[0]=item;result.length=1}else{result.push(item)}}return result}function parseMetadata(metadata){const result=[];for(const item of metadata.split(" ")){const expressionAndOptions=item.split("?",1);const algorithmExpression=expressionAndOptions[0];let base64Value="";const algorithmAndValue=[algorithmExpression.slice(0,6),algorithmExpression.slice(7)];const algorithm=algorithmAndValue[0];if(!isValidSRIHashAlgorithm(algorithm)){continue}if(algorithmAndValue[1]){base64Value=algorithmAndValue[1]}const metadata2={alg:algorithm,val:base64Value};result.push(metadata2)}return result}var applyAlgorithmToBytes=(algorithm,bytes)=>{return crypto5.hash(algorithm,bytes,"base64")};function caseSensitiveMatch(actualValue,expectedValue){let actualValueLength=actualValue.length;if(actualValueLength!==0&&actualValue[actualValueLength-1]==="="){actualValueLength-=1}if(actualValueLength!==0&&actualValue[actualValueLength-1]==="="){actualValueLength-=1}let expectedValueLength=expectedValue.length;if(expectedValueLength!==0&&expectedValue[expectedValueLength-1]==="="){expectedValueLength-=1}if(expectedValueLength!==0&&expectedValue[expectedValueLength-1]==="="){expectedValueLength-=1}if(actualValueLength!==expectedValueLength){return false}for(let i=0;i<actualValueLength;++i){if(actualValue[i]===expectedValue[i]||actualValue[i]==="+"&&expectedValue[i]==="-"||actualValue[i]==="/"&&expectedValue[i]==="_"){continue}return false}return true}module.exports={applyAlgorithmToBytes,bytesMatch,caseSensitiveMatch,isValidSRIHashAlgorithm,getStrongestMetadata,parseMetadata}}});var require_fetch=__commonJS({"node_modules/undici/lib/web/fetch/index.js"(exports,module){"use strict";var{makeNetworkError,makeAppropriateNetworkError,filterResponse,makeResponse,fromInnerResponse,getResponseState}=require_response();var{HeadersList}=require_headers();var{Request:Request2,cloneRequest,getRequestDispatcher,getRequestState}=require_request2();var zlib2=__require("zlib");var{makePolicyContainer,clonePolicyContainer,requestBadPort,TAOCheck,appendRequestOriginHeader,responseLocationURL,requestCurrentURL,setRequestReferrerPolicyOnRedirect,tryUpgradeRequestToAPotentiallyTrustworthyURL,createOpaqueTimingInfo,appendFetchMetadata,corsCheck,crossOriginResourcePolicyCheck,determineRequestsReferrer,coarsenedSharedCurrentTime,sameOrigin,isCancelled,isAborted,isErrorLike,fullyReadBody,readableStreamClose,urlIsLocal,urlIsHttpHttpsScheme,urlHasHttpsScheme,clampAndCoarsenConnectionTimingInfo,simpleRangeHeaderValue,buildContentRange,createInflate,extractMimeType,hasAuthenticationEntry,includesCredentials,isTraversableNavigable}=require_util3();var assert=__require("assert");var{safelyExtractBody,extractBody}=require_body();var{redirectStatusSet,nullBodyStatus,safeMethodsSet,requestBodyHeader,subresourceSet}=require_constants3();var EE=__require("events");var{Readable,pipeline,finished,isErrored,isReadable}=__require("stream");var{addAbortListener,bufferToLowerCasedHeaderName}=require_util2();var{dataURLProcessor,serializeAMimeType,minimizeSupportedMimeType}=require_data_url();var{getGlobalDispatcher}=require_global2();var{webidl}=require_webidl();var{STATUS_CODES}=__require("http");var{bytesMatch}=require_subresource_integrity();var{createDeferredPromise}=require_promise();var{isomorphicEncode}=require_infra();var{runtimeFeatures}=require_runtime_features();var hasZstd=runtimeFeatures.has("zstd");var GET_OR_HEAD=["GET","HEAD"];var defaultUserAgent=typeof __UNDICI_IS_NODE__!=="undefined"||typeof esbuildDetection!=="undefined"?"node":"undici";var resolveObjectURL;var Fetch=class extends EE{constructor(dispatcher){super();this.dispatcher=dispatcher;this.connection=null;this.dump=false;this.state="ongoing"}terminate(reason){if(this.state!=="ongoing"){return}this.state="terminated";this.connection?.destroy(reason);this.emit("terminated",reason)}abort(error){if(this.state!=="ongoing"){return}this.state="aborted";if(!error){error=new DOMException("The operation was aborted.","AbortError")}this.serializedAbortReason=error;this.connection?.destroy(error);this.emit("terminated",error)}};function handleFetchDone(response){finalizeAndReportTiming(response,"fetch")}function fetch2(input,init=void 0){webidl.argumentLengthCheck(arguments,1,"globalThis.fetch");let p2=createDeferredPromise();let requestObject;try{requestObject=new Request2(input,init)}catch(e){p2.reject(e);return p2.promise}const request=getRequestState(requestObject);if(requestObject.signal.aborted){abortFetch(p2,request,null,requestObject.signal.reason,null);return p2.promise}const globalObject=request.client.globalObject;if(globalObject?.constructor?.name==="ServiceWorkerGlobalScope"){request.serviceWorkers="none"}let responseObject=null;let locallyAborted=false;let controller=null;addAbortListener(requestObject.signal,()=>{locallyAborted=true;assert(controller!=null);controller.abort(requestObject.signal.reason);const realResponse=responseObject?.deref();abortFetch(p2,request,realResponse,requestObject.signal.reason,controller.controller)});const processResponse=response=>{if(locallyAborted){return}if(response.aborted){abortFetch(p2,request,responseObject,controller.serializedAbortReason,controller.controller);return}if(response.type==="error"){p2.reject(new TypeError("fetch failed",{cause:response.error}));return}responseObject=new WeakRef(fromInnerResponse(response,"immutable"));p2.resolve(responseObject.deref());p2=null};controller=fetching({request,processResponseEndOfBody:handleFetchDone,processResponse,dispatcher:getRequestDispatcher(requestObject),requestObject});return p2.promise}function finalizeAndReportTiming(response,initiatorType="other"){if(response.type==="error"&&response.aborted){return}if(!response.urlList?.length){return}const originalURL=response.urlList[0];let timingInfo=response.timingInfo;let cacheState=response.cacheState;if(!urlIsHttpHttpsScheme(originalURL)){return}if(timingInfo===null){return}if(!response.timingAllowPassed){timingInfo=createOpaqueTimingInfo({startTime:timingInfo.startTime});cacheState=""}timingInfo.endTime=coarsenedSharedCurrentTime();response.timingInfo=timingInfo;markResourceTiming(timingInfo,originalURL.href,initiatorType,globalThis,cacheState,"",response.status)}var markResourceTiming=performance.markResourceTiming;function abortFetch(p2,request,responseObject,error,controller){if(p2){p2.reject(error)}if(request.body?.stream!=null&&isReadable(request.body.stream)){request.body.stream.cancel(error).catch(err=>{if(err.code==="ERR_INVALID_STATE"){return}throw err})}if(responseObject==null){return}const response=getResponseState(responseObject);if(response.body?.stream!=null&&isReadable(response.body.stream)){controller.error(error)}}function fetching({request,processRequestBodyChunkLength,processRequestEndOfBody,processResponse,processResponseEndOfBody,processResponseConsumeBody,useParallelQueue=false,dispatcher=getGlobalDispatcher(),requestObject=null}){assert(dispatcher);let taskDestination=null;let crossOriginIsolatedCapability=false;if(request.client!=null){taskDestination=request.client.globalObject;crossOriginIsolatedCapability=request.client.crossOriginIsolatedCapability}const currentTime=coarsenedSharedCurrentTime(crossOriginIsolatedCapability);const timingInfo=createOpaqueTimingInfo({startTime:currentTime});const fetchParams={controller:new Fetch(dispatcher),request,timingInfo,processRequestBodyChunkLength,processRequestEndOfBody,processResponse,processResponseConsumeBody,processResponseEndOfBody,taskDestination,crossOriginIsolatedCapability,requestObject};assert(!request.body||request.body.stream);if(request.window==="client"){request.window=request.client?.globalObject?.constructor?.name==="Window"?request.client:"no-window"}if(request.origin==="client"){request.origin=request.client.origin}if(request.policyContainer==="client"){if(request.client!=null){request.policyContainer=clonePolicyContainer(request.client.policyContainer)}else{request.policyContainer=makePolicyContainer()}}if(!request.headersList.contains("accept",true)){const value="*/*";request.headersList.append("accept",value,true)}if(!request.headersList.contains("accept-language",true)){request.headersList.append("accept-language","*",true)}if(request.priority===null){}if(subresourceSet.has(request.destination)){}mainFetch(fetchParams,false);return fetchParams.controller}async function mainFetch(fetchParams,recursive){try{const request=fetchParams.request;let response=null;if(request.localURLsOnly&&!urlIsLocal(requestCurrentURL(request))){response=makeNetworkError("local URLs only")}tryUpgradeRequestToAPotentiallyTrustworthyURL(request);if(requestBadPort(request)==="blocked"){response=makeNetworkError("bad port")}if(request.referrerPolicy===""){request.referrerPolicy=request.policyContainer.referrerPolicy}if(request.referrer!=="no-referrer"){request.referrer=determineRequestsReferrer(request)}if(response===null){const currentURL=requestCurrentURL(request);if(sameOrigin(currentURL,request.url)&&request.responseTainting==="basic"||currentURL.protocol==="data:"||(request.mode==="navigate"||request.mode==="websocket")){request.responseTainting="basic";response=await schemeFetch(fetchParams)}else if(request.mode==="same-origin"){response=makeNetworkError('request mode cannot be "same-origin"')}else if(request.mode==="no-cors"){if(request.redirect!=="follow"){response=makeNetworkError('redirect mode cannot be "follow" for "no-cors" request')}else{request.responseTainting="opaque";response=await schemeFetch(fetchParams)}}else if(!urlIsHttpHttpsScheme(requestCurrentURL(request))){response=makeNetworkError("URL scheme must be a HTTP(S) scheme")}else{request.responseTainting="cors";response=await httpFetch(fetchParams)}}if(recursive){return response}if(response.status!==0&&!response.internalResponse){if(request.responseTainting==="cors"){}if(request.responseTainting==="basic"){response=filterResponse(response,"basic")}else if(request.responseTainting==="cors"){response=filterResponse(response,"cors")}else if(request.responseTainting==="opaque"){response=filterResponse(response,"opaque")}else{assert(false)}}let internalResponse=response.status===0?response:response.internalResponse;if(internalResponse.urlList.length===0){internalResponse.urlList.push(...request.urlList)}if(!request.timingAllowFailed){response.timingAllowPassed=true}if(response.type==="opaque"&&internalResponse.status===206&&internalResponse.rangeRequested&&!request.headers.contains("range",true)){response=internalResponse=makeNetworkError()}if(response.status!==0&&(request.method==="HEAD"||request.method==="CONNECT"||nullBodyStatus.includes(internalResponse.status))){internalResponse.body=null;fetchParams.controller.dump=true}if(request.integrity){const processBodyError=reason=>fetchFinale(fetchParams,makeNetworkError(reason));if(request.responseTainting==="opaque"||response.body==null){processBodyError(response.error);return}const processBody=bytes=>{if(!bytesMatch(bytes,request.integrity)){processBodyError("integrity mismatch");return}response.body=safelyExtractBody(bytes)[0];fetchFinale(fetchParams,response)};fullyReadBody(response.body,processBody,processBodyError)}else{fetchFinale(fetchParams,response)}}catch(err){fetchParams.controller.terminate(err)}}function schemeFetch(fetchParams){if(isCancelled(fetchParams)&&fetchParams.request.redirectCount===0){return Promise.resolve(makeAppropriateNetworkError(fetchParams))}const{request}=fetchParams;const{protocol:scheme}=requestCurrentURL(request);switch(scheme){case"about:":{return Promise.resolve(makeNetworkError("about scheme is not supported"))}case"blob:":{if(!resolveObjectURL){resolveObjectURL=__require("buffer").resolveObjectURL}const blobURLEntry=requestCurrentURL(request);if(blobURLEntry.search.length!==0){return Promise.resolve(makeNetworkError("NetworkError when attempting to fetch resource."))}const blob=resolveObjectURL(blobURLEntry.toString());if(request.method!=="GET"||!webidl.is.Blob(blob)){return Promise.resolve(makeNetworkError("invalid method"))}const response=makeResponse();const fullLength=blob.size;const serializedFullLength=isomorphicEncode(`${fullLength}`);const type=blob.type;if(!request.headersList.contains("range",true)){const bodyWithType=extractBody(blob);response.statusText="OK";response.body=bodyWithType[0];response.headersList.set("content-length",serializedFullLength,true);response.headersList.set("content-type",type,true)}else{response.rangeRequested=true;const rangeHeader=request.headersList.get("range",true);const rangeValue=simpleRangeHeaderValue(rangeHeader,true);if(rangeValue==="failure"){return Promise.resolve(makeNetworkError("failed to fetch the data URL"))}let{rangeStartValue:rangeStart,rangeEndValue:rangeEnd}=rangeValue;if(rangeStart===null){rangeStart=fullLength-rangeEnd;rangeEnd=rangeStart+rangeEnd-1}else{if(rangeStart>=fullLength){return Promise.resolve(makeNetworkError("Range start is greater than the blob's size."))}if(rangeEnd===null||rangeEnd>=fullLength){rangeEnd=fullLength-1}}const slicedBlob=blob.slice(rangeStart,rangeEnd+1,type);const slicedBodyWithType=extractBody(slicedBlob);response.body=slicedBodyWithType[0];const serializedSlicedLength=isomorphicEncode(`${slicedBlob.size}`);const contentRange=buildContentRange(rangeStart,rangeEnd,fullLength);response.status=206;response.statusText="Partial Content";response.headersList.set("content-length",serializedSlicedLength,true);response.headersList.set("content-type",type,true);response.headersList.set("content-range",contentRange,true)}return Promise.resolve(response)}case"data:":{const currentURL=requestCurrentURL(request);const dataURLStruct=dataURLProcessor(currentURL);if(dataURLStruct==="failure"){return Promise.resolve(makeNetworkError("failed to fetch the data URL"))}const mimeType=serializeAMimeType(dataURLStruct.mimeType);return Promise.resolve(makeResponse({statusText:"OK",headersList:[["content-type",{name:"Content-Type",value:mimeType}]],body:safelyExtractBody(dataURLStruct.body)[0]}))}case"file:":{return Promise.resolve(makeNetworkError("not implemented... yet..."))}case"http:":case"https:":{return httpFetch(fetchParams).catch(err=>makeNetworkError(err))}default:{return Promise.resolve(makeNetworkError("unknown scheme"))}}}function finalizeResponse(fetchParams,response){fetchParams.request.done=true;if(fetchParams.processResponseDone!=null){queueMicrotask(()=>fetchParams.processResponseDone(response))}}function fetchFinale(fetchParams,response){let timingInfo=fetchParams.timingInfo;const processResponseEndOfBody=()=>{const unsafeEndTime=Date.now();if(fetchParams.request.destination==="document"){fetchParams.controller.fullTimingInfo=timingInfo}fetchParams.controller.reportTimingSteps=()=>{if(!urlIsHttpHttpsScheme(fetchParams.request.url)){return}timingInfo.endTime=unsafeEndTime;let cacheState=response.cacheState;const bodyInfo=response.bodyInfo;if(!response.timingAllowPassed){timingInfo=createOpaqueTimingInfo(timingInfo);cacheState=""}let responseStatus=0;if(fetchParams.request.mode!=="navigate"||!response.hasCrossOriginRedirects){responseStatus=response.status;const mimeType=extractMimeType(response.headersList);if(mimeType!=="failure"){bodyInfo.contentType=minimizeSupportedMimeType(mimeType)}}if(fetchParams.request.initiatorType!=null){markResourceTiming(timingInfo,fetchParams.request.url.href,fetchParams.request.initiatorType,globalThis,cacheState,bodyInfo,responseStatus)}};const processResponseEndOfBodyTask=()=>{fetchParams.request.done=true;if(fetchParams.processResponseEndOfBody!=null){queueMicrotask(()=>fetchParams.processResponseEndOfBody(response))}if(fetchParams.request.initiatorType!=null){fetchParams.controller.reportTimingSteps()}};queueMicrotask(()=>processResponseEndOfBodyTask())};if(fetchParams.processResponse!=null){queueMicrotask(()=>{fetchParams.processResponse(response);fetchParams.processResponse=null})}const internalResponse=response.type==="error"?response:response.internalResponse??response;if(internalResponse.body==null){processResponseEndOfBody()}else{finished(internalResponse.body.stream,()=>{processResponseEndOfBody()})}}async function httpFetch(fetchParams){const request=fetchParams.request;let response=null;let actualResponse=null;const timingInfo=fetchParams.timingInfo;if(request.serviceWorkers==="all"){}if(response===null){if(request.redirect==="follow"){request.serviceWorkers="none"}actualResponse=response=await httpNetworkOrCacheFetch(fetchParams);if(request.responseTainting==="cors"&&corsCheck(request,response)==="failure"){return makeNetworkError("cors failure")}if(TAOCheck(request,response)==="failure"){request.timingAllowFailed=true}}if((request.responseTainting==="opaque"||response.type==="opaque")&&crossOriginResourcePolicyCheck(request.origin,request.client,request.destination,actualResponse)==="blocked"){return makeNetworkError("blocked")}if(redirectStatusSet.has(actualResponse.status)){if(request.redirect!=="manual"){fetchParams.controller.connection.destroy(void 0,false)}if(request.redirect==="error"){response=makeNetworkError("unexpected redirect")}else if(request.redirect==="manual"){response=actualResponse}else if(request.redirect==="follow"){response=await httpRedirectFetch(fetchParams,response)}else{assert(false)}}response.timingInfo=timingInfo;return response}function httpRedirectFetch(fetchParams,response){const request=fetchParams.request;const actualResponse=response.internalResponse?response.internalResponse:response;let locationURL;try{locationURL=responseLocationURL(actualResponse,requestCurrentURL(request).hash);if(locationURL==null){return response}}catch(err){return Promise.resolve(makeNetworkError(err))}if(!urlIsHttpHttpsScheme(locationURL)){return Promise.resolve(makeNetworkError("URL scheme must be a HTTP(S) scheme"))}if(request.redirectCount===20){return Promise.resolve(makeNetworkError("redirect count exceeded"))}request.redirectCount+=1;if(request.mode==="cors"&&(locationURL.username||locationURL.password)&&!sameOrigin(request,locationURL)){return Promise.resolve(makeNetworkError('cross origin not allowed for request mode "cors"'))}if(request.responseTainting==="cors"&&(locationURL.username||locationURL.password)){return Promise.resolve(makeNetworkError('URL cannot contain credentials for request mode "cors"'))}if(actualResponse.status!==303&&request.body!=null&&request.body.source==null){return Promise.resolve(makeNetworkError())}if([301,302].includes(actualResponse.status)&&request.method==="POST"||actualResponse.status===303&&!GET_OR_HEAD.includes(request.method)){request.method="GET";request.body=null;for(const headerName of requestBodyHeader){request.headersList.delete(headerName)}}if(!sameOrigin(requestCurrentURL(request),locationURL)){request.headersList.delete("authorization",true);request.headersList.delete("proxy-authorization",true);request.headersList.delete("cookie",true);request.headersList.delete("host",true)}if(request.body!=null){assert(request.body.source!=null);request.body=safelyExtractBody(request.body.source)[0]}const timingInfo=fetchParams.timingInfo;timingInfo.redirectEndTime=timingInfo.postRedirectStartTime=coarsenedSharedCurrentTime(fetchParams.crossOriginIsolatedCapability);if(timingInfo.redirectStartTime===0){timingInfo.redirectStartTime=timingInfo.startTime}request.urlList.push(locationURL);setRequestReferrerPolicyOnRedirect(request,actualResponse);return mainFetch(fetchParams,true)}async function httpNetworkOrCacheFetch(fetchParams,isAuthenticationFetch=false,isNewConnectionFetch=false){const request=fetchParams.request;let httpFetchParams=null;let httpRequest=null;let response=null;const httpCache=null;const revalidatingFlag=false;if(request.window==="no-window"&&request.redirect==="error"){httpFetchParams=fetchParams;httpRequest=request}else{httpRequest=cloneRequest(request);httpFetchParams={...fetchParams};httpFetchParams.request=httpRequest}const includeCredentials=request.credentials==="include"||request.credentials==="same-origin"&&request.responseTainting==="basic";const contentLength=httpRequest.body?httpRequest.body.length:null;let contentLengthHeaderValue=null;if(httpRequest.body==null&&["POST","PUT"].includes(httpRequest.method)){contentLengthHeaderValue="0"}if(contentLength!=null){contentLengthHeaderValue=isomorphicEncode(`${contentLength}`)}if(contentLengthHeaderValue!=null&&!httpRequest.headersList.contains("content-length",true)){httpRequest.headersList.append("content-length",contentLengthHeaderValue,true)}if(contentLength!=null&&httpRequest.keepalive){}if(webidl.is.URL(httpRequest.referrer)){httpRequest.headersList.append("referer",isomorphicEncode(httpRequest.referrer.href),true)}appendRequestOriginHeader(httpRequest);appendFetchMetadata(httpRequest);if(!httpRequest.headersList.contains("user-agent",true)){httpRequest.headersList.append("user-agent",defaultUserAgent,true)}if(httpRequest.cache==="default"&&(httpRequest.headersList.contains("if-modified-since",true)||httpRequest.headersList.contains("if-none-match",true)||httpRequest.headersList.contains("if-unmodified-since",true)||httpRequest.headersList.contains("if-match",true)||httpRequest.headersList.contains("if-range",true))){httpRequest.cache="no-store"}if(httpRequest.cache==="no-cache"&&!httpRequest.preventNoCacheCacheControlHeaderModification&&!httpRequest.headersList.contains("cache-control",true)){httpRequest.headersList.append("cache-control","max-age=0",true)}if(httpRequest.cache==="no-store"||httpRequest.cache==="reload"){if(!httpRequest.headersList.contains("pragma",true)){httpRequest.headersList.append("pragma","no-cache",true)}if(!httpRequest.headersList.contains("cache-control",true)){httpRequest.headersList.append("cache-control","no-cache",true)}}if(httpRequest.headersList.contains("range",true)){httpRequest.headersList.append("accept-encoding","identity",true)}if(!httpRequest.headersList.contains("accept-encoding",true)){if(urlHasHttpsScheme(requestCurrentURL(httpRequest))){httpRequest.headersList.append("accept-encoding","br, gzip, deflate",true)}else{httpRequest.headersList.append("accept-encoding","gzip, deflate",true)}}httpRequest.headersList.delete("host",true);if(includeCredentials){if(!httpRequest.headersList.contains("authorization",true)){let authorizationValue=null;if(hasAuthenticationEntry(httpRequest)&&(httpRequest.useURLCredentials===void 0||!includesCredentials(requestCurrentURL(httpRequest)))){}else if(includesCredentials(requestCurrentURL(httpRequest))&&isAuthenticationFetch){const{username,password}=requestCurrentURL(httpRequest);authorizationValue=`Basic ${Buffer.from(`${username}:${password}`).toString("base64")}`}if(authorizationValue!==null){httpRequest.headersList.append("Authorization",authorizationValue,false)}}}if(httpCache==null){httpRequest.cache="no-store"}if(httpRequest.cache!=="no-store"&&httpRequest.cache!=="reload"){}if(response==null){if(httpRequest.cache==="only-if-cached"){return makeNetworkError("only if cached")}const forwardResponse=await httpNetworkFetch(httpFetchParams,includeCredentials,isNewConnectionFetch);if(!safeMethodsSet.has(httpRequest.method)&&forwardResponse.status>=200&&forwardResponse.status<=399){}if(revalidatingFlag&&forwardResponse.status===304){}if(response==null){response=forwardResponse}}response.urlList=[...httpRequest.urlList];if(httpRequest.headersList.contains("range",true)){response.rangeRequested=true}response.requestIncludesCredentials=includeCredentials;if(response.status===401&&httpRequest.responseTainting!=="cors"&&includeCredentials&&(request.useURLCredentials!==void 0||isTraversableNavigable(request.traversableForUserPrompts))){if(request.body!=null){if(request.body.source==null){return response}request.body=safelyExtractBody(request.body.source)[0]}if(request.useURLCredentials===void 0||isAuthenticationFetch){if(isCancelled(fetchParams)){return makeAppropriateNetworkError(fetchParams)}return response}fetchParams.controller.connection.destroy();response=await httpNetworkOrCacheFetch(fetchParams,true)}if(response.status===407){if(request.window==="no-window"){return makeNetworkError()}if(isCancelled(fetchParams)){return makeAppropriateNetworkError(fetchParams)}return makeNetworkError("proxy authentication required")}if(response.status===421&&!isNewConnectionFetch&&(request.body==null||request.body.source!=null)){if(isCancelled(fetchParams)){return makeAppropriateNetworkError(fetchParams)}fetchParams.controller.connection.destroy();response=await httpNetworkOrCacheFetch(fetchParams,isAuthenticationFetch,true)}if(isAuthenticationFetch){}return response}async function httpNetworkFetch(fetchParams,includeCredentials=false,forceNewConnection=false){assert(!fetchParams.controller.connection||fetchParams.controller.connection.destroyed);fetchParams.controller.connection={abort:null,destroyed:false,destroy(err,abort=true){if(!this.destroyed){this.destroyed=true;if(abort){this.abort?.(err??new DOMException("The operation was aborted.","AbortError"))}}}};const request=fetchParams.request;let response=null;const timingInfo=fetchParams.timingInfo;const httpCache=null;if(httpCache==null){request.cache="no-store"}const newConnection=forceNewConnection?"yes":"no";if(request.mode==="websocket"){}else{}let requestBody=null;if(request.body==null&&fetchParams.processRequestEndOfBody){queueMicrotask(()=>fetchParams.processRequestEndOfBody())}else if(request.body!=null){const processBodyChunk=async function*(bytes){if(isCancelled(fetchParams)){return}yield bytes;fetchParams.processRequestBodyChunkLength?.(bytes.byteLength)};const processEndOfBody=()=>{if(isCancelled(fetchParams)){return}if(fetchParams.processRequestEndOfBody){fetchParams.processRequestEndOfBody()}};const processBodyError=e=>{if(isCancelled(fetchParams)){return}if(e.name==="AbortError"){fetchParams.controller.abort()}else{fetchParams.controller.terminate(e)}};requestBody=(async function*(){try{for await(const bytes of request.body.stream){yield*processBodyChunk(bytes)}processEndOfBody()}catch(err){processBodyError(err)}})()}try{const{body,status,statusText,headersList,socket}=await dispatch({body:requestBody});if(socket){response=makeResponse({status,statusText,headersList,socket})}else{const iterator=body[Symbol.asyncIterator]();fetchParams.controller.next=()=>iterator.next();response=makeResponse({status,statusText,headersList})}}catch(err){if(err.name==="AbortError"){fetchParams.controller.connection.destroy();return makeAppropriateNetworkError(fetchParams,err)}return makeNetworkError(err)}const pullAlgorithm=()=>{return fetchParams.controller.resume()};const cancelAlgorithm=reason=>{if(!isCancelled(fetchParams)){fetchParams.controller.abort(reason)}};const stream2=new ReadableStream({start(controller){fetchParams.controller.controller=controller},pull:pullAlgorithm,cancel:cancelAlgorithm,type:"bytes"});response.body={stream:stream2,source:null,length:null};if(!fetchParams.controller.resume){fetchParams.controller.on("terminated",onAborted)}fetchParams.controller.resume=async()=>{while(true){let bytes;let isFailure;try{const{done,value}=await fetchParams.controller.next();if(isAborted(fetchParams)){break}bytes=done?void 0:value}catch(err){if(fetchParams.controller.ended&&!timingInfo.encodedBodySize){bytes=void 0}else{bytes=err;isFailure=true}}if(bytes===void 0){readableStreamClose(fetchParams.controller.controller);finalizeResponse(fetchParams,response);return}timingInfo.decodedBodySize+=bytes?.byteLength??0;if(isFailure){fetchParams.controller.terminate(bytes);return}const buffer=new Uint8Array(bytes);if(buffer.byteLength){fetchParams.controller.controller.enqueue(buffer)}if(isErrored(stream2)){fetchParams.controller.terminate();return}if(fetchParams.controller.controller.desiredSize<=0){return}}};function onAborted(reason){if(isAborted(fetchParams)){response.aborted=true;if(isReadable(stream2)){fetchParams.controller.controller.error(fetchParams.controller.serializedAbortReason)}}else{if(isReadable(stream2)){fetchParams.controller.controller.error(new TypeError("terminated",{cause:isErrorLike(reason)?reason:void 0}))}}fetchParams.controller.connection.destroy()}return response;function dispatch({body}){const url=requestCurrentURL(request);const agent=fetchParams.controller.dispatcher;const path31=url.pathname+url.search;const hasTrailingQuestionMark=url.search.length===0&&url.href[url.href.length-url.hash.length-1]==="?";return new Promise((resolve,reject)=>agent.dispatch({path:hasTrailingQuestionMark?`${path31}?`:path31,origin:url.origin,method:request.method,body:agent.isMockActive?request.body&&(request.body.source||request.body.stream):body,headers:request.headersList.entries,maxRedirections:0,upgrade:request.mode==="websocket"?"websocket":void 0},{body:null,abort:null,onConnect(abort){const{connection}=fetchParams.controller;timingInfo.finalConnectionTimingInfo=clampAndCoarsenConnectionTimingInfo(void 0,timingInfo.postRedirectStartTime,fetchParams.crossOriginIsolatedCapability);if(connection.destroyed){abort(new DOMException("The operation was aborted.","AbortError"))}else{fetchParams.controller.on("terminated",abort);this.abort=connection.abort=abort}timingInfo.finalNetworkRequestStartTime=coarsenedSharedCurrentTime(fetchParams.crossOriginIsolatedCapability)},onResponseStarted(){timingInfo.finalNetworkResponseStartTime=coarsenedSharedCurrentTime(fetchParams.crossOriginIsolatedCapability)},onHeaders(status,rawHeaders,resume,statusText){if(status<200){return false}const headersList=new HeadersList;for(let i=0;i<rawHeaders.length;i+=2){const nameStr=bufferToLowerCasedHeaderName(rawHeaders[i]);const value=rawHeaders[i+1];if(Array.isArray(value)&&!Buffer.isBuffer(rawHeaders[i+1])){for(const val of value){headersList.append(nameStr,val.toString("latin1"),true)}}else{headersList.append(nameStr,value.toString("latin1"),true)}}const location=headersList.get("location",true);this.body=new Readable({read:resume});const willFollow=location&&request.redirect==="follow"&&redirectStatusSet.has(status);const decoders=[];if(request.method!=="HEAD"&&request.method!=="CONNECT"&&!nullBodyStatus.includes(status)&&!willFollow){const contentEncoding=headersList.get("content-encoding",true);const codings=contentEncoding?contentEncoding.toLowerCase().split(","):[];const maxContentEncodings=5;if(codings.length>maxContentEncodings){reject(new Error(`too many content-encodings in response: ${codings.length}, maximum allowed is ${maxContentEncodings}`));return true}for(let i=codings.length-1;i>=0;--i){const coding=codings[i].trim();if(coding==="x-gzip"||coding==="gzip"){decoders.push(zlib2.createGunzip({flush:zlib2.constants.Z_SYNC_FLUSH,finishFlush:zlib2.constants.Z_SYNC_FLUSH}))}else if(coding==="deflate"){decoders.push(createInflate({flush:zlib2.constants.Z_SYNC_FLUSH,finishFlush:zlib2.constants.Z_SYNC_FLUSH}))}else if(coding==="br"){decoders.push(zlib2.createBrotliDecompress({flush:zlib2.constants.BROTLI_OPERATION_FLUSH,finishFlush:zlib2.constants.BROTLI_OPERATION_FLUSH}))}else if(coding==="zstd"&&hasZstd){decoders.push(zlib2.createZstdDecompress({flush:zlib2.constants.ZSTD_e_continue,finishFlush:zlib2.constants.ZSTD_e_end}))}else{decoders.length=0;break}}}const onError=this.onError.bind(this);resolve({status,statusText,headersList,body:decoders.length?pipeline(this.body,...decoders,err=>{if(err){this.onError(err)}}).on("error",onError):this.body.on("error",onError)});return true},onData(chunk){if(fetchParams.controller.dump){return}const bytes=chunk;timingInfo.encodedBodySize+=bytes.byteLength;return this.body.push(bytes)},onComplete(){if(this.abort){fetchParams.controller.off("terminated",this.abort)}fetchParams.controller.ended=true;this.body.push(null)},onError(error){if(this.abort){fetchParams.controller.off("terminated",this.abort)}this.body?.destroy(error);fetchParams.controller.terminate(error);reject(error)},onRequestUpgrade(_controller,status,headers,socket){if(socket.session!=null&&status!==200||socket.session==null&&status!==101){return false}const headersList=new HeadersList;for(const[name,value]of Object.entries(headers)){if(value==null){continue}const headerName=name.toLowerCase();if(Array.isArray(value)){for(const entry of value){headersList.append(headerName,String(entry),true)}}else{headersList.append(headerName,String(value),true)}}resolve({status,statusText:STATUS_CODES[status],headersList,socket});return true},onUpgrade(status,rawHeaders,socket){if(socket.session!=null&&status!==200||socket.session==null&&status!==101){return false}const headersList=new HeadersList;for(let i=0;i<rawHeaders.length;i+=2){const nameStr=bufferToLowerCasedHeaderName(rawHeaders[i]);const value=rawHeaders[i+1];if(Array.isArray(value)&&!Buffer.isBuffer(rawHeaders[i+1])){for(const val of value){headersList.append(nameStr,val.toString("latin1"),true)}}else{headersList.append(nameStr,value.toString("latin1"),true)}}resolve({status,statusText:STATUS_CODES[status],headersList,socket});return true}}))}}module.exports={fetch:fetch2,Fetch,fetching,finalizeAndReportTiming}}});var require_util4=__commonJS({"node_modules/undici/lib/web/cache/util.js"(exports,module){"use strict";var assert=__require("assert");var{URLSerializer}=require_data_url();var{isValidHeaderName}=require_util3();function urlEquals(A3,B3,excludeFragment=false){const serializedA=URLSerializer(A3,excludeFragment);const serializedB=URLSerializer(B3,excludeFragment);return serializedA===serializedB}function getFieldValues(header){assert(header!==null);const values=[];for(let value of header.split(",")){value=value.trim();if(isValidHeaderName(value)){values.push(value)}}return values}module.exports={urlEquals,getFieldValues}}});var require_cache3=__commonJS({"node_modules/undici/lib/web/cache/cache.js"(exports,module){"use strict";var assert=__require("assert");var{kConstruct}=require_symbols();var{urlEquals,getFieldValues}=require_util4();var{kEnumerableProperty,isDisturbed}=require_util2();var{webidl}=require_webidl();var{cloneResponse,fromInnerResponse,getResponseState}=require_response();var{Request:Request2,fromInnerRequest,getRequestState}=require_request2();var{fetching}=require_fetch();var{urlIsHttpHttpsScheme,readAllBytes}=require_util3();var{createDeferredPromise}=require_promise();var Cache=class _Cache{#relevantRequestResponseList;constructor(){if(arguments[0]!==kConstruct){webidl.illegalConstructor()}webidl.util.markAsUncloneable(this);this.#relevantRequestResponseList=arguments[1]}async match(request,options={}){webidl.brandCheck(this,_Cache);const prefix="Cache.match";webidl.argumentLengthCheck(arguments,1,prefix);request=webidl.converters.RequestInfo(request);options=webidl.converters.CacheQueryOptions(options,prefix,"options");const p2=this.#internalMatchAll(request,options,1);if(p2.length===0){return}return p2[0]}async matchAll(request=void 0,options={}){webidl.brandCheck(this,_Cache);const prefix="Cache.matchAll";if(request!==void 0)request=webidl.converters.RequestInfo(request);options=webidl.converters.CacheQueryOptions(options,prefix,"options");return this.#internalMatchAll(request,options)}async add(request){webidl.brandCheck(this,_Cache);const prefix="Cache.add";webidl.argumentLengthCheck(arguments,1,prefix);request=webidl.converters.RequestInfo(request);const requests=[request];const responseArrayPromise=this.addAll(requests);return await responseArrayPromise}async addAll(requests){webidl.brandCheck(this,_Cache);const prefix="Cache.addAll";webidl.argumentLengthCheck(arguments,1,prefix);const responsePromises=[];const requestList=[];for(let request of requests){if(request===void 0){throw webidl.errors.conversionFailed({prefix,argument:"Argument 1",types:["undefined is not allowed"]})}request=webidl.converters.RequestInfo(request);if(typeof request==="string"){continue}const r=getRequestState(request);if(!urlIsHttpHttpsScheme(r.url)||r.method!=="GET"){throw webidl.errors.exception({header:prefix,message:"Expected http/s scheme when method is not GET."})}}const fetchControllers=[];for(const request of requests){const r=getRequestState(new Request2(request));if(!urlIsHttpHttpsScheme(r.url)){throw webidl.errors.exception({header:prefix,message:"Expected http/s scheme."})}r.initiator="fetch";r.destination="subresource";requestList.push(r);const responsePromise=createDeferredPromise();fetchControllers.push(fetching({request:r,processResponse(response){if(response.type==="error"||response.status===206||response.status<200||response.status>299){responsePromise.reject(webidl.errors.exception({header:"Cache.addAll",message:"Received an invalid status code or the request failed."}))}else if(response.headersList.contains("vary")){const fieldValues=getFieldValues(response.headersList.get("vary"));for(const fieldValue of fieldValues){if(fieldValue==="*"){responsePromise.reject(webidl.errors.exception({header:"Cache.addAll",message:"invalid vary field value"}));for(const controller of fetchControllers){controller.abort()}return}}}},processResponseEndOfBody(response){if(response.aborted){responsePromise.reject(new DOMException("aborted","AbortError"));return}responsePromise.resolve(response)}}));responsePromises.push(responsePromise.promise)}const p2=Promise.all(responsePromises);const responses=await p2;const operations=[];let index=0;for(const response of responses){const operation={type:"put",request:requestList[index],response};operations.push(operation);index++}const cacheJobPromise=createDeferredPromise();let errorData=null;try{this.#batchCacheOperations(operations)}catch(e){errorData=e}queueMicrotask(()=>{if(errorData===null){cacheJobPromise.resolve(void 0)}else{cacheJobPromise.reject(errorData)}});return cacheJobPromise.promise}async put(request,response){webidl.brandCheck(this,_Cache);const prefix="Cache.put";webidl.argumentLengthCheck(arguments,2,prefix);request=webidl.converters.RequestInfo(request);response=webidl.converters.Response(response,prefix,"response");let innerRequest=null;if(webidl.is.Request(request)){innerRequest=getRequestState(request)}else{innerRequest=getRequestState(new Request2(request))}if(!urlIsHttpHttpsScheme(innerRequest.url)||innerRequest.method!=="GET"){throw webidl.errors.exception({header:prefix,message:"Expected an http/s scheme when method is not GET"})}const innerResponse=getResponseState(response);if(innerResponse.status===206){throw webidl.errors.exception({header:prefix,message:"Got 206 status"})}if(innerResponse.headersList.contains("vary")){const fieldValues=getFieldValues(innerResponse.headersList.get("vary"));for(const fieldValue of fieldValues){if(fieldValue==="*"){throw webidl.errors.exception({header:prefix,message:"Got * vary field value"})}}}if(innerResponse.body&&(isDisturbed(innerResponse.body.stream)||innerResponse.body.stream.locked)){throw webidl.errors.exception({header:prefix,message:"Response body is locked or disturbed"})}const clonedResponse=cloneResponse(innerResponse);const bodyReadPromise=createDeferredPromise();if(innerResponse.body!=null){const stream2=innerResponse.body.stream;const reader=stream2.getReader();readAllBytes(reader,bodyReadPromise.resolve,bodyReadPromise.reject)}else{bodyReadPromise.resolve(void 0)}const operations=[];const operation={type:"put",request:innerRequest,response:clonedResponse};operations.push(operation);const bytes=await bodyReadPromise.promise;if(clonedResponse.body!=null){clonedResponse.body.source=bytes}const cacheJobPromise=createDeferredPromise();let errorData=null;try{this.#batchCacheOperations(operations)}catch(e){errorData=e}queueMicrotask(()=>{if(errorData===null){cacheJobPromise.resolve()}else{cacheJobPromise.reject(errorData)}});return cacheJobPromise.promise}async delete(request,options={}){webidl.brandCheck(this,_Cache);const prefix="Cache.delete";webidl.argumentLengthCheck(arguments,1,prefix);request=webidl.converters.RequestInfo(request);options=webidl.converters.CacheQueryOptions(options,prefix,"options");let r=null;if(webidl.is.Request(request)){r=getRequestState(request);if(r.method!=="GET"&&!options.ignoreMethod){return false}}else{assert(typeof request==="string");r=getRequestState(new Request2(request))}const operations=[];const operation={type:"delete",request:r,options};operations.push(operation);const cacheJobPromise=createDeferredPromise();let errorData=null;let requestResponses;try{requestResponses=this.#batchCacheOperations(operations)}catch(e){errorData=e}queueMicrotask(()=>{if(errorData===null){cacheJobPromise.resolve(!!requestResponses?.length)}else{cacheJobPromise.reject(errorData)}});return cacheJobPromise.promise}async keys(request=void 0,options={}){webidl.brandCheck(this,_Cache);const prefix="Cache.keys";if(request!==void 0)request=webidl.converters.RequestInfo(request);options=webidl.converters.CacheQueryOptions(options,prefix,"options");let r=null;if(request!==void 0){if(webidl.is.Request(request)){r=getRequestState(request);if(r.method!=="GET"&&!options.ignoreMethod){return[]}}else if(typeof request==="string"){r=getRequestState(new Request2(request))}}const promise=createDeferredPromise();const requests=[];if(request===void 0){for(const requestResponse of this.#relevantRequestResponseList){requests.push(requestResponse[0])}}else{const requestResponses=this.#queryCache(r,options);for(const requestResponse of requestResponses){requests.push(requestResponse[0])}}queueMicrotask(()=>{const requestList=[];for(const request2 of requests){const requestObject=fromInnerRequest(request2,void 0,new AbortController().signal,"immutable");requestList.push(requestObject)}promise.resolve(Object.freeze(requestList))});return promise.promise}#batchCacheOperations(operations){const cache2=this.#relevantRequestResponseList;const backupCache=[...cache2];const addedItems=[];const resultList=[];try{for(const operation of operations){if(operation.type!=="delete"&&operation.type!=="put"){throw webidl.errors.exception({header:"Cache.#batchCacheOperations",message:'operation type does not match "delete" or "put"'})}if(operation.type==="delete"&&operation.response!=null){throw webidl.errors.exception({header:"Cache.#batchCacheOperations",message:"delete operation should not have an associated response"})}if(this.#queryCache(operation.request,operation.options,addedItems).length){throw new DOMException("???","InvalidStateError")}let requestResponses;if(operation.type==="delete"){requestResponses=this.#queryCache(operation.request,operation.options);if(requestResponses.length===0){return[]}for(const requestResponse of requestResponses){const idx=cache2.indexOf(requestResponse);assert(idx!==-1);cache2.splice(idx,1)}}else if(operation.type==="put"){if(operation.response==null){throw webidl.errors.exception({header:"Cache.#batchCacheOperations",message:"put operation should have an associated response"})}const r=operation.request;if(!urlIsHttpHttpsScheme(r.url)){throw webidl.errors.exception({header:"Cache.#batchCacheOperations",message:"expected http or https scheme"})}if(r.method!=="GET"){throw webidl.errors.exception({header:"Cache.#batchCacheOperations",message:"not get method"})}if(operation.options!=null){throw webidl.errors.exception({header:"Cache.#batchCacheOperations",message:"options must not be defined"})}requestResponses=this.#queryCache(operation.request);for(const requestResponse of requestResponses){const idx=cache2.indexOf(requestResponse);assert(idx!==-1);cache2.splice(idx,1)}cache2.push([operation.request,operation.response]);addedItems.push([operation.request,operation.response])}resultList.push([operation.request,operation.response])}return resultList}catch(e){this.#relevantRequestResponseList.length=0;this.#relevantRequestResponseList=backupCache;throw e}}#queryCache(requestQuery,options,targetStorage){const resultList=[];const storage=targetStorage??this.#relevantRequestResponseList;for(const requestResponse of storage){const[cachedRequest,cachedResponse]=requestResponse;if(this.#requestMatchesCachedItem(requestQuery,cachedRequest,cachedResponse,options)){resultList.push(requestResponse)}}return resultList}#requestMatchesCachedItem(requestQuery,request,response=null,options){const queryURL=new URL(requestQuery.url);const cachedURL=new URL(request.url);if(options?.ignoreSearch){cachedURL.search="";queryURL.search=""}if(!urlEquals(queryURL,cachedURL,true)){return false}if(response==null||options?.ignoreVary||!response.headersList.contains("vary")){return true}const fieldValues=getFieldValues(response.headersList.get("vary"));for(const fieldValue of fieldValues){if(fieldValue==="*"){return false}const requestValue=request.headersList.get(fieldValue);const queryValue=requestQuery.headersList.get(fieldValue);if(requestValue!==queryValue){return false}}return true}#internalMatchAll(request,options,maxResponses=Infinity){let r=null;if(request!==void 0){if(webidl.is.Request(request)){r=getRequestState(request);if(r.method!=="GET"&&!options.ignoreMethod){return[]}}else if(typeof request==="string"){r=getRequestState(new Request2(request))}}const responses=[];if(request===void 0){for(const requestResponse of this.#relevantRequestResponseList){responses.push(requestResponse[1])}}else{const requestResponses=this.#queryCache(r,options);for(const requestResponse of requestResponses){responses.push(requestResponse[1])}}const responseList=[];for(const response of responses){const responseObject=fromInnerResponse(cloneResponse(response),"immutable");responseList.push(responseObject);if(responseList.length>=maxResponses){break}}return Object.freeze(responseList)}};Object.defineProperties(Cache.prototype,{[Symbol.toStringTag]:{value:"Cache",configurable:true},match:kEnumerableProperty,matchAll:kEnumerableProperty,add:kEnumerableProperty,addAll:kEnumerableProperty,put:kEnumerableProperty,delete:kEnumerableProperty,keys:kEnumerableProperty});var cacheQueryOptionConverters=[{key:"ignoreSearch",converter:webidl.converters.boolean,defaultValue:()=>false},{key:"ignoreMethod",converter:webidl.converters.boolean,defaultValue:()=>false},{key:"ignoreVary",converter:webidl.converters.boolean,defaultValue:()=>false}];webidl.converters.CacheQueryOptions=webidl.dictionaryConverter(cacheQueryOptionConverters);webidl.converters.MultiCacheQueryOptions=webidl.dictionaryConverter([...cacheQueryOptionConverters,{key:"cacheName",converter:webidl.converters.DOMString}]);webidl.converters.Response=webidl.interfaceConverter(webidl.is.Response,"Response");webidl.converters["sequence<RequestInfo>"]=webidl.sequenceConverter(webidl.converters.RequestInfo);module.exports={Cache}}});var require_cachestorage=__commonJS({"node_modules/undici/lib/web/cache/cachestorage.js"(exports,module){"use strict";var{Cache}=require_cache3();var{webidl}=require_webidl();var{kEnumerableProperty}=require_util2();var{kConstruct}=require_symbols();var CacheStorage=class _CacheStorage{#caches=new Map;constructor(){if(arguments[0]!==kConstruct){webidl.illegalConstructor()}webidl.util.markAsUncloneable(this)}async match(request,options={}){webidl.brandCheck(this,_CacheStorage);webidl.argumentLengthCheck(arguments,1,"CacheStorage.match");request=webidl.converters.RequestInfo(request);options=webidl.converters.MultiCacheQueryOptions(options);if(options.cacheName!=null){if(this.#caches.has(options.cacheName)){const cacheList=this.#caches.get(options.cacheName);const cache2=new Cache(kConstruct,cacheList);return await cache2.match(request,options)}}else{for(const cacheList of this.#caches.values()){const cache2=new Cache(kConstruct,cacheList);const response=await cache2.match(request,options);if(response!==void 0){return response}}}}async has(cacheName){webidl.brandCheck(this,_CacheStorage);const prefix="CacheStorage.has";webidl.argumentLengthCheck(arguments,1,prefix);cacheName=webidl.converters.DOMString(cacheName,prefix,"cacheName");return this.#caches.has(cacheName)}async open(cacheName){webidl.brandCheck(this,_CacheStorage);const prefix="CacheStorage.open";webidl.argumentLengthCheck(arguments,1,prefix);cacheName=webidl.converters.DOMString(cacheName,prefix,"cacheName");if(this.#caches.has(cacheName)){const cache3=this.#caches.get(cacheName);return new Cache(kConstruct,cache3)}const cache2=[];this.#caches.set(cacheName,cache2);return new Cache(kConstruct,cache2)}async delete(cacheName){webidl.brandCheck(this,_CacheStorage);const prefix="CacheStorage.delete";webidl.argumentLengthCheck(arguments,1,prefix);cacheName=webidl.converters.DOMString(cacheName,prefix,"cacheName");return this.#caches.delete(cacheName)}async keys(){webidl.brandCheck(this,_CacheStorage);const keys=this.#caches.keys();return[...keys]}};Object.defineProperties(CacheStorage.prototype,{[Symbol.toStringTag]:{value:"CacheStorage",configurable:true},match:kEnumerableProperty,has:kEnumerableProperty,open:kEnumerableProperty,delete:kEnumerableProperty,keys:kEnumerableProperty});module.exports={CacheStorage}}});var require_constants4=__commonJS({"node_modules/undici/lib/web/cookies/constants.js"(exports,module){"use strict";var maxAttributeValueSize=1024;var maxNameValuePairSize=4096;module.exports={maxAttributeValueSize,maxNameValuePairSize}}});var require_util5=__commonJS({"node_modules/undici/lib/web/cookies/util.js"(exports,module){"use strict";function isCTLExcludingHtab(value){for(let i=0;i<value.length;++i){const code=value.charCodeAt(i);if(code>=0&&code<=8||code>=10&&code<=31||code===127){return true}}return false}function validateCookieName(name){for(let i=0;i<name.length;++i){const code=name.charCodeAt(i);if(code<33||code>126||code===34||code===40||code===41||code===60||code===62||code===64||code===44||code===59||code===58||code===92||code===47||code===91||code===93||code===63||code===61||code===123||code===125){throw new Error("Invalid cookie name")}}}function validateCookieValue(value){let len=value.length;let i=0;if(value[0]==='"'){if(len===1||value[len-1]!=='"'){throw new Error("Invalid cookie value")}--len;++i}while(i<len){const code=value.charCodeAt(i++);if(code<33||code>126||code===34||code===44||code===59||code===92){throw new Error("Invalid cookie value")}}}function validateCookiePath(path31){for(let i=0;i<path31.length;++i){const code=path31.charCodeAt(i);if(code<32||code>126||code===59){throw new Error("Invalid cookie path")}}}function isLetterOrDigit(code){return code>=48&&code<=57||code>=65&&code<=90||code>=97&&code<=122}function validateCookieDomain(domain){if(domain===" "){return}if(domain.length>255){throw new Error("Invalid cookie domain")}let labelLength=0;for(let i=0;i<domain.length;++i){const code=domain.charCodeAt(i);if(code===46){if(labelLength===0){throw new Error("Invalid cookie domain")}if(domain.charCodeAt(i-1)===45){throw new Error("Invalid cookie domain")}labelLength=0;continue}if(labelLength===0&&!isLetterOrDigit(code)){throw new Error("Invalid cookie domain")}if(!isLetterOrDigit(code)&&code!==45){throw new Error("Invalid cookie domain")}if(++labelLength>63){throw new Error("Invalid cookie domain")}}if(labelLength===0||domain.charCodeAt(domain.length-1)===45){throw new Error("Invalid cookie domain")}}var IMFDays=["Sun","Mon","Tue","Wed","Thu","Fri","Sat"];var IMFMonths=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];var IMFPaddedNumbers=Array(61).fill(0).map((_3,i)=>i.toString().padStart(2,"0"));function toIMFDate(date){if(typeof date==="number"){date=new Date(date)}return`${IMFDays[date.getUTCDay()]}, ${IMFPaddedNumbers[date.getUTCDate()]} ${IMFMonths[date.getUTCMonth()]} ${date.getUTCFullYear()} ${IMFPaddedNumbers[date.getUTCHours()]}:${IMFPaddedNumbers[date.getUTCMinutes()]}:${IMFPaddedNumbers[date.getUTCSeconds()]} GMT`}function validateCookieMaxAge(maxAge){if(maxAge<0){throw new Error("Invalid cookie max-age")}}function stringify(cookie){if(cookie.name.length===0){return null}validateCookieName(cookie.name);validateCookieValue(cookie.value);const out=[`${cookie.name}=${cookie.value}`];if(cookie.name.startsWith("__Secure-")){cookie.secure=true}if(cookie.name.startsWith("__Host-")){cookie.secure=true;cookie.domain=null;cookie.path="/"}if(cookie.secure){out.push("Secure")}if(cookie.httpOnly){out.push("HttpOnly")}if(typeof cookie.maxAge==="number"){validateCookieMaxAge(cookie.maxAge);out.push(`Max-Age=${cookie.maxAge}`)}if(cookie.domain){validateCookieDomain(cookie.domain);out.push(`Domain=${cookie.domain}`)}if(cookie.path){validateCookiePath(cookie.path);out.push(`Path=${cookie.path}`)}if(cookie.expires&&cookie.expires.toString()!=="Invalid Date"){out.push(`Expires=${toIMFDate(cookie.expires)}`)}if(cookie.sameSite){out.push(`SameSite=${cookie.sameSite}`)}for(const part of cookie.unparsed){if(!part.includes("=")){throw new Error("Invalid unparsed")}const[key,...value]=part.split("=");const trimmedKey=key.trim();const joinedValue=value.join("=");validateCookieName(trimmedKey);validateCookieValue(joinedValue);out.push(`${trimmedKey}=${joinedValue}`)}return out.join("; ")}module.exports={isCTLExcludingHtab,validateCookieName,validateCookiePath,validateCookieValue,toIMFDate,stringify}}});var require_parse=__commonJS({"node_modules/undici/lib/web/cookies/parse.js"(exports,module){"use strict";var{collectASequenceOfCodePointsFast}=require_infra();var{maxNameValuePairSize,maxAttributeValueSize}=require_constants4();var{isCTLExcludingHtab}=require_util5();var assert=__require("assert");function parseSetCookie(header){if(isCTLExcludingHtab(header)){return null}let nameValuePair="";let unparsedAttributes="";let name="";let value="";if(header.includes(";")){const position={position:0};nameValuePair=collectASequenceOfCodePointsFast(";",header,position);unparsedAttributes=header.slice(position.position)}else{nameValuePair=header}if(!nameValuePair.includes("=")){value=nameValuePair}else{const position={position:0};name=collectASequenceOfCodePointsFast("=",nameValuePair,position);value=nameValuePair.slice(position.position+1)}name=name.trim();value=value.trim();if(name.length+value.length>maxNameValuePairSize){return null}return{name,value,...parseUnparsedAttributes(unparsedAttributes)}}function parseUnparsedAttributes(unparsedAttributes,cookieAttributeList={}){if(unparsedAttributes.length===0){return cookieAttributeList}assert(unparsedAttributes[0]===";");unparsedAttributes=unparsedAttributes.slice(1);let cookieAv="";if(unparsedAttributes.includes(";")){cookieAv=collectASequenceOfCodePointsFast(";",unparsedAttributes,{position:0});unparsedAttributes=unparsedAttributes.slice(cookieAv.length)}else{cookieAv=unparsedAttributes;unparsedAttributes=""}let attributeName="";let attributeValue="";if(cookieAv.includes("=")){const position={position:0};attributeName=collectASequenceOfCodePointsFast("=",cookieAv,position);attributeValue=cookieAv.slice(position.position+1)}else{attributeName=cookieAv}attributeName=attributeName.trim();attributeValue=attributeValue.trim();if(attributeValue.length>maxAttributeValueSize){return parseUnparsedAttributes(unparsedAttributes,cookieAttributeList)}const attributeNameLowercase=attributeName.toLowerCase();if(attributeNameLowercase==="expires"){const expiryTime=new Date(attributeValue);cookieAttributeList.expires=expiryTime}else if(attributeNameLowercase==="max-age"){const charCode=attributeValue.charCodeAt(0);if((charCode<48||charCode>57)&&attributeValue[0]!=="-"){return parseUnparsedAttributes(unparsedAttributes,cookieAttributeList)}if(!/^\d+$/.test(attributeValue)){return parseUnparsedAttributes(unparsedAttributes,cookieAttributeList)}const deltaSeconds=Number(attributeValue);cookieAttributeList.maxAge=deltaSeconds}else if(attributeNameLowercase==="domain"){let cookieDomain=attributeValue;if(cookieDomain[0]==="."){cookieDomain=cookieDomain.slice(1)}cookieDomain=cookieDomain.toLowerCase();cookieAttributeList.domain=cookieDomain}else if(attributeNameLowercase==="path"){let cookiePath="";if(attributeValue.length===0||attributeValue[0]!=="/"){cookiePath="/"}else{cookiePath=attributeValue}cookieAttributeList.path=cookiePath}else if(attributeNameLowercase==="secure"){cookieAttributeList.secure=true}else if(attributeNameLowercase==="httponly"){cookieAttributeList.httpOnly=true}else if(attributeNameLowercase==="samesite"){const attributeValueLowercase=attributeValue.toLowerCase();if(attributeValueLowercase==="none"){cookieAttributeList.sameSite="None"}else if(attributeValueLowercase==="strict"){cookieAttributeList.sameSite="Strict"}else if(attributeValueLowercase==="lax"){cookieAttributeList.sameSite="Lax"}}else{cookieAttributeList.unparsed??=[];cookieAttributeList.unparsed.push(`${attributeName}=${attributeValue}`)}return parseUnparsedAttributes(unparsedAttributes,cookieAttributeList)}module.exports={parseSetCookie,parseUnparsedAttributes}}});var require_cookies=__commonJS({"node_modules/undici/lib/web/cookies/index.js"(exports,module){"use strict";var{parseSetCookie}=require_parse();var{stringify}=require_util5();var{webidl}=require_webidl();var{Headers:Headers2}=require_headers();var brandChecks=webidl.brandCheckMultiple([Headers2,globalThis.Headers].filter(Boolean));function getCookies(headers){webidl.argumentLengthCheck(arguments,1,"getCookies");brandChecks(headers);const cookie=headers.get("cookie");const out={};if(!cookie){return out}for(const piece of cookie.split(";")){const[name,...value]=piece.split("=");out[name.trim()]=value.join("=")}return out}function deleteCookie(headers,name,attributes){brandChecks(headers);const prefix="deleteCookie";webidl.argumentLengthCheck(arguments,2,prefix);name=webidl.converters.DOMString(name,prefix,"name");attributes=webidl.converters.DeleteCookieAttributes(attributes);setCookie(headers,{name,value:"",expires:new Date(0),...attributes})}function getSetCookies(headers){webidl.argumentLengthCheck(arguments,1,"getSetCookies");brandChecks(headers);const cookies=headers.getSetCookie();if(!cookies){return[]}return cookies.map(pair=>parseSetCookie(pair))}function parseCookie(cookie){cookie=webidl.converters.DOMString(cookie);return parseSetCookie(cookie)}function setCookie(headers,cookie){webidl.argumentLengthCheck(arguments,2,"setCookie");brandChecks(headers);cookie=webidl.converters.Cookie(cookie);const str=stringify(cookie);if(str){headers.append("set-cookie",str,true)}}webidl.converters.DeleteCookieAttributes=webidl.dictionaryConverter([{converter:webidl.nullableConverter(webidl.converters.DOMString),key:"path",defaultValue:()=>null},{converter:webidl.nullableConverter(webidl.converters.DOMString),key:"domain",defaultValue:()=>null}]);webidl.converters.Cookie=webidl.dictionaryConverter([{converter:webidl.converters.DOMString,key:"name"},{converter:webidl.converters.DOMString,key:"value"},{converter:webidl.nullableConverter(value=>{if(typeof value==="number"){return webidl.converters["unsigned long long"](value)}return new Date(value)}),key:"expires",defaultValue:()=>null},{converter:webidl.nullableConverter(webidl.converters["long long"]),key:"maxAge",defaultValue:()=>null},{converter:webidl.nullableConverter(webidl.converters.DOMString),key:"domain",defaultValue:()=>null},{converter:webidl.nullableConverter(webidl.converters.DOMString),key:"path",defaultValue:()=>null},{converter:webidl.nullableConverter(webidl.converters.boolean),key:"secure",defaultValue:()=>null},{converter:webidl.nullableConverter(webidl.converters.boolean),key:"httpOnly",defaultValue:()=>null},{converter:webidl.converters.USVString,key:"sameSite",allowedValues:["Strict","Lax","None"]},{converter:webidl.sequenceConverter(webidl.converters.DOMString),key:"unparsed",defaultValue:()=>[]}]);module.exports={getCookies,deleteCookie,getSetCookies,setCookie,parseCookie}}});var require_events=__commonJS({"node_modules/undici/lib/web/websocket/events.js"(exports,module){"use strict";var{webidl}=require_webidl();var{kEnumerableProperty}=require_util2();var{kConstruct}=require_symbols();var MessageEvent=class _MessageEvent extends Event{#eventInit;constructor(type,eventInitDict={}){if(type===kConstruct){super(arguments[1],arguments[2]);webidl.util.markAsUncloneable(this);return}const prefix="MessageEvent constructor";webidl.argumentLengthCheck(arguments,1,prefix);type=webidl.converters.DOMString(type,prefix,"type");eventInitDict=webidl.converters.MessageEventInit(eventInitDict,prefix,"eventInitDict");super(type,eventInitDict);this.#eventInit=eventInitDict;webidl.util.markAsUncloneable(this)}get data(){webidl.brandCheck(this,_MessageEvent);return this.#eventInit.data}get origin(){webidl.brandCheck(this,_MessageEvent);return this.#eventInit.origin}get lastEventId(){webidl.brandCheck(this,_MessageEvent);return this.#eventInit.lastEventId}get source(){webidl.brandCheck(this,_MessageEvent);return this.#eventInit.source}get ports(){webidl.brandCheck(this,_MessageEvent);if(!Object.isFrozen(this.#eventInit.ports)){Object.freeze(this.#eventInit.ports)}return this.#eventInit.ports}initMessageEvent(type,bubbles=false,cancelable=false,data=null,origin="",lastEventId="",source=null,ports=[]){webidl.brandCheck(this,_MessageEvent);webidl.argumentLengthCheck(arguments,1,"MessageEvent.initMessageEvent");return new _MessageEvent(type,{bubbles,cancelable,data,origin,lastEventId,source,ports})}static createFastMessageEvent(type,init){const messageEvent=new _MessageEvent(kConstruct,type,init);messageEvent.#eventInit=init;messageEvent.#eventInit.data??=null;messageEvent.#eventInit.origin??="";messageEvent.#eventInit.lastEventId??="";messageEvent.#eventInit.source??=null;messageEvent.#eventInit.ports??=[];return messageEvent}};var{createFastMessageEvent}=MessageEvent;delete MessageEvent.createFastMessageEvent;var CloseEvent=class _CloseEvent extends Event{#eventInit;constructor(type,eventInitDict={}){const prefix="CloseEvent constructor";webidl.argumentLengthCheck(arguments,1,prefix);type=webidl.converters.DOMString(type,prefix,"type");eventInitDict=webidl.converters.CloseEventInit(eventInitDict);super(type,eventInitDict);this.#eventInit=eventInitDict;webidl.util.markAsUncloneable(this)}get wasClean(){webidl.brandCheck(this,_CloseEvent);return this.#eventInit.wasClean}get code(){webidl.brandCheck(this,_CloseEvent);return this.#eventInit.code}get reason(){webidl.brandCheck(this,_CloseEvent);return this.#eventInit.reason}};var ErrorEvent=class _ErrorEvent extends Event{#eventInit;constructor(type,eventInitDict){const prefix="ErrorEvent constructor";webidl.argumentLengthCheck(arguments,1,prefix);super(type,eventInitDict);webidl.util.markAsUncloneable(this);type=webidl.converters.DOMString(type,prefix,"type");eventInitDict=webidl.converters.ErrorEventInit(eventInitDict??{});this.#eventInit=eventInitDict}get message(){webidl.brandCheck(this,_ErrorEvent);return this.#eventInit.message}get filename(){webidl.brandCheck(this,_ErrorEvent);return this.#eventInit.filename}get lineno(){webidl.brandCheck(this,_ErrorEvent);return this.#eventInit.lineno}get colno(){webidl.brandCheck(this,_ErrorEvent);return this.#eventInit.colno}get error(){webidl.brandCheck(this,_ErrorEvent);return this.#eventInit.error}};Object.defineProperties(MessageEvent.prototype,{[Symbol.toStringTag]:{value:"MessageEvent",configurable:true},data:kEnumerableProperty,origin:kEnumerableProperty,lastEventId:kEnumerableProperty,source:kEnumerableProperty,ports:kEnumerableProperty,initMessageEvent:kEnumerableProperty});Object.defineProperties(CloseEvent.prototype,{[Symbol.toStringTag]:{value:"CloseEvent",configurable:true},reason:kEnumerableProperty,code:kEnumerableProperty,wasClean:kEnumerableProperty});Object.defineProperties(ErrorEvent.prototype,{[Symbol.toStringTag]:{value:"ErrorEvent",configurable:true},message:kEnumerableProperty,filename:kEnumerableProperty,lineno:kEnumerableProperty,colno:kEnumerableProperty,error:kEnumerableProperty});webidl.converters.MessagePort=webidl.interfaceConverter(webidl.is.MessagePort,"MessagePort");webidl.converters["sequence<MessagePort>"]=webidl.sequenceConverter(webidl.converters.MessagePort);var eventInit=[{key:"bubbles",converter:webidl.converters.boolean,defaultValue:()=>false},{key:"cancelable",converter:webidl.converters.boolean,defaultValue:()=>false},{key:"composed",converter:webidl.converters.boolean,defaultValue:()=>false}];webidl.converters.MessageEventInit=webidl.dictionaryConverter([...eventInit,{key:"data",converter:webidl.converters.any,defaultValue:()=>null},{key:"origin",converter:webidl.converters.USVString,defaultValue:()=>""},{key:"lastEventId",converter:webidl.converters.DOMString,defaultValue:()=>""},{key:"source",converter:webidl.nullableConverter(webidl.converters.MessagePort),defaultValue:()=>null},{key:"ports",converter:webidl.converters["sequence<MessagePort>"],defaultValue:()=>[]}]);webidl.converters.CloseEventInit=webidl.dictionaryConverter([...eventInit,{key:"wasClean",converter:webidl.converters.boolean,defaultValue:()=>false},{key:"code",converter:webidl.converters["unsigned short"],defaultValue:()=>0},{key:"reason",converter:webidl.converters.USVString,defaultValue:()=>""}]);webidl.converters.ErrorEventInit=webidl.dictionaryConverter([...eventInit,{key:"message",converter:webidl.converters.DOMString,defaultValue:()=>""},{key:"filename",converter:webidl.converters.USVString,defaultValue:()=>""},{key:"lineno",converter:webidl.converters["unsigned long"],defaultValue:()=>0},{key:"colno",converter:webidl.converters["unsigned long"],defaultValue:()=>0},{key:"error",converter:webidl.converters.any}]);module.exports={MessageEvent,CloseEvent,ErrorEvent,createFastMessageEvent}}});var require_constants5=__commonJS({"node_modules/undici/lib/web/websocket/constants.js"(exports,module){"use strict";var uid="258EAFA5-E914-47DA-95CA-C5AB0DC85B11";var staticPropertyDescriptors={enumerable:true,writable:false,configurable:false};var states={CONNECTING:0,OPEN:1,CLOSING:2,CLOSED:3};var sentCloseFrameState={SENT:1,RECEIVED:2};var opcodes={CONTINUATION:0,TEXT:1,BINARY:2,CLOSE:8,PING:9,PONG:10};var maxUnsigned16Bit=65535;var parserStates={INFO:0,PAYLOADLENGTH_16:2,PAYLOADLENGTH_64:3,READ_DATA:4};var emptyBuffer=Buffer.allocUnsafe(0);var sendHints={text:1,typedArray:2,arrayBuffer:3,blob:4};module.exports={uid,sentCloseFrameState,staticPropertyDescriptors,states,opcodes,maxUnsigned16Bit,parserStates,emptyBuffer,sendHints}}});var require_util6=__commonJS({"node_modules/undici/lib/web/websocket/util.js"(exports,module){"use strict";var{states,opcodes}=require_constants5();var{isUtf8}=__require("buffer");var{removeHTTPWhitespace}=require_data_url();var{collectASequenceOfCodePointsFast}=require_infra();function isConnecting(readyState){return readyState===states.CONNECTING}function isEstablished(readyState){return readyState===states.OPEN}function isClosing(readyState){return readyState===states.CLOSING}function isClosed(readyState){return readyState===states.CLOSED}function fireEvent(e,target,eventFactory=(type,init)=>new Event(type,init),eventInitDict={}){const event=eventFactory(e,eventInitDict);target.dispatchEvent(event)}function websocketMessageReceived(handler,type,data){handler.onMessage(type,data)}function toArrayBuffer(buffer){if(buffer.byteLength===buffer.buffer.byteLength){return buffer.buffer}return new Uint8Array(buffer).buffer}function isValidSubprotocol(protocol){if(protocol.length===0){return false}for(let i=0;i<protocol.length;++i){const code=protocol.charCodeAt(i);if(code<33||code>126||code===34||code===40||code===41||code===44||code===47||code===58||code===59||code===60||code===61||code===62||code===63||code===64||code===91||code===92||code===93||code===123||code===125){return false}}return true}function isValidStatusCode(code){if(code>=1e3&&code<1015){return code!==1004&&code!==1005&&code!==1006}return code>=3e3&&code<=4999}function isControlFrame(opcode){return opcode===opcodes.CLOSE||opcode===opcodes.PING||opcode===opcodes.PONG}function isContinuationFrame(opcode){return opcode===opcodes.CONTINUATION}function isTextBinaryFrame(opcode){return opcode===opcodes.TEXT||opcode===opcodes.BINARY}function isValidOpcode(opcode){return isTextBinaryFrame(opcode)||isContinuationFrame(opcode)||isControlFrame(opcode)}function parseExtensions(extensions){const position={position:0};const extensionList=new Map;while(position.position<extensions.length){const pair=collectASequenceOfCodePointsFast(";",extensions,position);const[name,value=""]=pair.split("=",2);extensionList.set(removeHTTPWhitespace(name,true,false),removeHTTPWhitespace(value,false,true));position.position++}return extensionList}function isValidClientWindowBits(value){if(value.length===0){return false}for(let i=0;i<value.length;i++){const byte=value.charCodeAt(i);if(byte<48||byte>57){return false}}const num=Number.parseInt(value,10);return num>=8&&num<=15}function getURLRecord(url,baseURL){let urlRecord;try{urlRecord=new URL(url,baseURL)}catch(e){throw new DOMException(e,"SyntaxError")}if(urlRecord.protocol==="http:"){urlRecord.protocol="ws:"}else if(urlRecord.protocol==="https:"){urlRecord.protocol="wss:"}if(urlRecord.protocol!=="ws:"&&urlRecord.protocol!=="wss:"){throw new DOMException("expected a ws: or wss: url","SyntaxError")}if(urlRecord.hash.length||urlRecord.href.endsWith("#")){throw new DOMException("hash","SyntaxError")}return urlRecord}function validateCloseCodeAndReason(code,reason){if(code!==null){if(code!==1e3&&(code<3e3||code>4999)){throw new DOMException("invalid code","InvalidAccessError")}}if(reason!==null){const reasonBytesLength=Buffer.byteLength(reason);if(reasonBytesLength>123){throw new DOMException(`Reason must be less than 123 bytes; received ${reasonBytesLength}`,"SyntaxError")}}}var utf8Decode=(()=>{if(typeof process.versions.icu==="string"){const fatalDecoder=new TextDecoder("utf-8",{fatal:true});return fatalDecoder.decode.bind(fatalDecoder)}return function(buffer){if(isUtf8(buffer)){return buffer.toString("utf-8")}throw new TypeError("Invalid utf-8 received.")}})();module.exports={isConnecting,isEstablished,isClosing,isClosed,fireEvent,isValidSubprotocol,isValidStatusCode,websocketMessageReceived,utf8Decode,isControlFrame,isContinuationFrame,isTextBinaryFrame,isValidOpcode,parseExtensions,isValidClientWindowBits,toArrayBuffer,getURLRecord,validateCloseCodeAndReason}}});var require_frame=__commonJS({"node_modules/undici/lib/web/websocket/frame.js"(exports,module){"use strict";var{runtimeFeatures}=require_runtime_features();var{maxUnsigned16Bit,opcodes}=require_constants5();var BUFFER_SIZE=8*1024;var buffer=null;var bufIdx=BUFFER_SIZE;var randomFillSync=runtimeFeatures.has("crypto")?__require("crypto").randomFillSync:function randomFillSync2(buffer2,_offset,_size){for(let i=0;i<buffer2.length;++i){buffer2[i]=Math.random()*255|0}return buffer2};function generateMask(){if(bufIdx===BUFFER_SIZE){bufIdx=0;randomFillSync(buffer??=Buffer.allocUnsafeSlow(BUFFER_SIZE),0,BUFFER_SIZE)}return[buffer[bufIdx++],buffer[bufIdx++],buffer[bufIdx++],buffer[bufIdx++]]}var WebsocketFrameSend=class{constructor(data){this.frameData=data}createFrame(opcode){const frameData=this.frameData;const maskKey=generateMask();const bodyLength=frameData?.byteLength??0;let payloadLength=bodyLength;let offset=6;if(bodyLength>maxUnsigned16Bit){offset+=8;payloadLength=127}else if(bodyLength>125){offset+=2;payloadLength=126}const buffer2=Buffer.allocUnsafe(bodyLength+offset);buffer2[0]=buffer2[1]=0;buffer2[0]|=128;buffer2[0]=(buffer2[0]&240)+opcode;buffer2[offset-4]=maskKey[0];buffer2[offset-3]=maskKey[1];buffer2[offset-2]=maskKey[2];buffer2[offset-1]=maskKey[3];buffer2[1]=payloadLength;if(payloadLength===126){buffer2.writeUInt16BE(bodyLength,2)}else if(payloadLength===127){buffer2[2]=buffer2[3]=0;buffer2.writeUIntBE(bodyLength,4,6)}buffer2[1]|=128;for(let i=0;i<bodyLength;++i){buffer2[offset+i]=frameData[i]^maskKey[i&3]}return buffer2}static createFastTextFrame(buffer2){const maskKey=generateMask();const bodyLength=buffer2.length;for(let i=0;i<bodyLength;++i){buffer2[i]^=maskKey[i&3]}let payloadLength=bodyLength;let offset=6;if(bodyLength>maxUnsigned16Bit){offset+=8;payloadLength=127}else if(bodyLength>125){offset+=2;payloadLength=126}const head=Buffer.allocUnsafeSlow(offset);head[0]=128|opcodes.TEXT;head[1]=payloadLength|128;head[offset-4]=maskKey[0];head[offset-3]=maskKey[1];head[offset-2]=maskKey[2];head[offset-1]=maskKey[3];if(payloadLength===126){head.writeUInt16BE(bodyLength,2)}else if(payloadLength===127){head[2]=head[3]=0;head.writeUIntBE(bodyLength,4,6)}return[head,buffer2]}};module.exports={WebsocketFrameSend,generateMask}}});var require_connection=__commonJS({"node_modules/undici/lib/web/websocket/connection.js"(exports,module){"use strict";var{uid,states,sentCloseFrameState,emptyBuffer,opcodes}=require_constants5();var{parseExtensions,isClosed,isClosing,isEstablished,isConnecting,validateCloseCodeAndReason}=require_util6();var{makeRequest}=require_request2();var{fetching}=require_fetch();var{Headers:Headers2,getHeadersList}=require_headers();var{getDecodeSplit}=require_util3();var{WebsocketFrameSend}=require_frame();var assert=__require("assert");var{runtimeFeatures}=require_runtime_features();var crypto5=runtimeFeatures.has("crypto")?__require("crypto"):null;var warningEmitted=false;function establishWebSocketConnection(url,protocols,client,handler,options){const requestURL=url;requestURL.protocol=url.protocol==="ws:"?"http:":"https:";const request=makeRequest({urlList:[requestURL],client,serviceWorkers:"none",referrer:"no-referrer",mode:"websocket",credentials:"include",cache:"no-store",redirect:"error",useURLCredentials:true});if(options.headers){const headersList=getHeadersList(new Headers2(options.headers));request.headersList=headersList}const keyValue=crypto5.randomBytes(16).toString("base64");request.headersList.append("sec-websocket-key",keyValue,true);request.headersList.append("sec-websocket-version","13",true);for(const protocol of protocols){request.headersList.append("sec-websocket-protocol",protocol,true)}const permessageDeflate="permessage-deflate; client_max_window_bits";request.headersList.append("sec-websocket-extensions",permessageDeflate,true);const controller=fetching({request,useParallelQueue:true,dispatcher:options.dispatcher,processResponse(response){if(response.type==="error"||response.status!==101){if(response.socket?.session==null){failWebsocketConnection(handler,1002,"Received network error or non-101 status code.",response.error);return}if(response.status!==200){failWebsocketConnection(handler,1002,"Received network error or non-200 status code.",response.error);return}}if(warningEmitted===false&&response.socket?.session!=null){process.emitWarning("WebSocket over HTTP2 is experimental, and subject to change.","ExperimentalWarning");warningEmitted=true}if(protocols.length!==0&&!response.headersList.get("Sec-WebSocket-Protocol")){failWebsocketConnection(handler,1002,"Server did not respond with sent protocols.");return}if(response.socket.session==null&&response.headersList.get("Upgrade")?.toLowerCase()!=="websocket"){failWebsocketConnection(handler,1002,'Server did not set Upgrade header to "websocket".');return}if(response.socket.session==null&&response.headersList.get("Connection")?.toLowerCase()!=="upgrade"){failWebsocketConnection(handler,1002,'Server did not set Connection header to "upgrade".');return}const secWSAccept=response.headersList.get("Sec-WebSocket-Accept");const digest=crypto5.hash("sha1",keyValue+uid,"base64");if(secWSAccept!==digest){failWebsocketConnection(handler,1002,"Incorrect hash received in Sec-WebSocket-Accept header.");return}const secExtension=response.headersList.get("Sec-WebSocket-Extensions");let extensions;if(secExtension!==null){extensions=parseExtensions(secExtension);if(!extensions.has("permessage-deflate")){failWebsocketConnection(handler,1002,"Sec-WebSocket-Extensions header does not match.");return}}const secProtocol=response.headersList.get("Sec-WebSocket-Protocol");if(secProtocol!==null){const requestProtocols=getDecodeSplit("sec-websocket-protocol",request.headersList);if(!requestProtocols.includes(secProtocol)){failWebsocketConnection(handler,1002,"Protocol was not set in the opening handshake.");return}}response.socket.on("data",handler.onSocketData);response.socket.on("close",handler.onSocketClose);response.socket.on("error",handler.onSocketError);handler.wasEverConnected=true;handler.onConnectionEstablished(response,extensions)}});return controller}function closeWebSocketConnection(object,code,reason,validate2=false){code??=null;reason??="";if(validate2)validateCloseCodeAndReason(code,reason);if(isClosed(object.readyState)||isClosing(object.readyState)){}else if(!isEstablished(object.readyState)){failWebsocketConnection(object);object.readyState=states.CLOSING}else if(!object.closeState.has(sentCloseFrameState.SENT)&&!object.closeState.has(sentCloseFrameState.RECEIVED)){const frame2=new WebsocketFrameSend;if(reason.length!==0&&code===null){code=1e3}assert(code===null||Number.isInteger(code));if(code===null&&reason.length===0){frame2.frameData=emptyBuffer}else if(code!==null&&reason===null){frame2.frameData=Buffer.allocUnsafe(2);frame2.frameData.writeUInt16BE(code,0)}else if(code!==null&&reason!==null){frame2.frameData=Buffer.allocUnsafe(2+Buffer.byteLength(reason));frame2.frameData.writeUInt16BE(code,0);frame2.frameData.write(reason,2,"utf-8")}else{frame2.frameData=emptyBuffer}object.socket.write(frame2.createFrame(opcodes.CLOSE));object.closeState.add(sentCloseFrameState.SENT);object.readyState=states.CLOSING}else{object.readyState=states.CLOSING}}function failWebsocketConnection(handler,code,reason,cause){if(isEstablished(handler.readyState)){closeWebSocketConnection(handler,code,reason,false)}handler.controller.abort();if(isConnecting(handler.readyState)){handler.onSocketClose()}else if(handler.socket?.destroyed===false){handler.socket.destroy()}}module.exports={establishWebSocketConnection,failWebsocketConnection,closeWebSocketConnection}}});var require_permessage_deflate=__commonJS({"node_modules/undici/lib/web/websocket/permessage-deflate.js"(exports,module){"use strict";var{createInflateRaw,Z_DEFAULT_WINDOWBITS}=__require("zlib");var{isValidClientWindowBits}=require_util6();var{MessageSizeExceededError}=require_errors();var tail=Buffer.from([0,0,255,255]);var kBuffer=Symbol("kBuffer");var kLength=Symbol("kLength");var PerMessageDeflate=class{#inflate;#options={};#maxPayloadSize=0;constructor(extensions,options){this.#options.serverNoContextTakeover=extensions.has("server_no_context_takeover");this.#options.serverMaxWindowBits=extensions.get("server_max_window_bits");this.#maxPayloadSize=options.maxPayloadSize}decompress(chunk,fin,callback){if(!this.#inflate){let windowBits=Z_DEFAULT_WINDOWBITS;if(this.#options.serverMaxWindowBits){if(!isValidClientWindowBits(this.#options.serverMaxWindowBits)){callback(new Error("Invalid server_max_window_bits"));return}windowBits=Number.parseInt(this.#options.serverMaxWindowBits)}try{this.#inflate=createInflateRaw({windowBits})}catch(err){callback(err);return}this.#inflate[kBuffer]=[];this.#inflate[kLength]=0;this.#inflate.on("data",data=>{this.#inflate[kLength]+=data.length;if(this.#maxPayloadSize>0&&this.#inflate[kLength]>this.#maxPayloadSize){callback(new MessageSizeExceededError);this.#inflate.removeAllListeners();this.#inflate=null;return}this.#inflate[kBuffer].push(data)});this.#inflate.on("error",err=>{this.#inflate=null;callback(err)})}this.#inflate.write(chunk);if(fin){this.#inflate.write(tail)}this.#inflate.flush(()=>{if(!this.#inflate){return}const full=Buffer.concat(this.#inflate[kBuffer],this.#inflate[kLength]);this.#inflate[kBuffer].length=0;this.#inflate[kLength]=0;callback(null,full)})}};module.exports={PerMessageDeflate}}});var require_receiver=__commonJS({"node_modules/undici/lib/web/websocket/receiver.js"(exports,module){"use strict";var{Writable}=__require("stream");var assert=__require("assert");var{parserStates,opcodes,states,emptyBuffer,sentCloseFrameState}=require_constants5();var{isValidStatusCode,isValidOpcode,websocketMessageReceived,utf8Decode,isControlFrame,isTextBinaryFrame,isContinuationFrame}=require_util6();var{failWebsocketConnection}=require_connection();var{WebsocketFrameSend}=require_frame();var{PerMessageDeflate}=require_permessage_deflate();var{MessageSizeExceededError}=require_errors();var ByteParser=class extends Writable{#buffers=[];#fragmentsBytes=0;#byteOffset=0;#loop=false;#state=parserStates.INFO;#info={};#fragments=[];#extensions;#handler;#maxFragments;#maxPayloadSize;constructor(handler,extensions,options={}){super();this.#handler=handler;this.#extensions=extensions==null?new Map:extensions;this.#maxFragments=options.maxFragments??0;this.#maxPayloadSize=options.maxPayloadSize??0;if(this.#extensions.has("permessage-deflate")){this.#extensions.set("permessage-deflate",new PerMessageDeflate(extensions,options))}}_write(chunk,_3,callback){this.#buffers.push(chunk);this.#byteOffset+=chunk.length;this.#loop=true;this.run(callback)}#validatePayloadLength(){if(this.#maxPayloadSize>0&&!isControlFrame(this.#info.opcode)&&this.#info.payloadLength+this.#fragmentsBytes>this.#maxPayloadSize){failWebsocketConnection(this.#handler,1009,"Payload size exceeds maximum allowed size");return false}return true}run(callback){while(this.#loop){if(this.#state===parserStates.INFO){if(this.#byteOffset<2){return callback()}const buffer=this.consume(2);const fin=(buffer[0]&128)!==0;const opcode=buffer[0]&15;const masked=(buffer[1]&128)===128;const fragmented=!fin&&opcode!==opcodes.CONTINUATION;const payloadLength=buffer[1]&127;const rsv1=buffer[0]&64;const rsv2=buffer[0]&32;const rsv3=buffer[0]&16;if(!isValidOpcode(opcode)){failWebsocketConnection(this.#handler,1002,"Invalid opcode received");return callback()}if(masked){failWebsocketConnection(this.#handler,1002,"Frame cannot be masked");return callback()}if(rsv1!==0&&!this.#extensions.has("permessage-deflate")){failWebsocketConnection(this.#handler,1002,"Expected RSV1 to be clear.");return}if(rsv2!==0||rsv3!==0){failWebsocketConnection(this.#handler,1002,"RSV1, RSV2, RSV3 must be clear");return}if(fragmented&&!isTextBinaryFrame(opcode)){failWebsocketConnection(this.#handler,1002,"Invalid frame type was fragmented.");return}if(isTextBinaryFrame(opcode)&&this.#fragments.length>0){failWebsocketConnection(this.#handler,1002,"Expected continuation frame");return}if(this.#info.fragmented&&fragmented){failWebsocketConnection(this.#handler,1002,"Fragmented frame exceeded 125 bytes.");return}if((payloadLength>125||fragmented)&&isControlFrame(opcode)){failWebsocketConnection(this.#handler,1002,"Control frame either too large or fragmented");return}if(isContinuationFrame(opcode)&&this.#fragments.length===0&&!this.#info.compressed){failWebsocketConnection(this.#handler,1002,"Unexpected continuation frame");return}if(payloadLength<=125){this.#info.payloadLength=payloadLength;this.#state=parserStates.READ_DATA;if(!this.#validatePayloadLength()){return}}else if(payloadLength===126){this.#state=parserStates.PAYLOADLENGTH_16}else if(payloadLength===127){this.#state=parserStates.PAYLOADLENGTH_64}if(isTextBinaryFrame(opcode)){this.#info.binaryType=opcode;this.#info.compressed=rsv1!==0}this.#info.opcode=opcode;this.#info.masked=masked;this.#info.fin=fin;this.#info.fragmented=fragmented}else if(this.#state===parserStates.PAYLOADLENGTH_16){if(this.#byteOffset<2){return callback()}const buffer=this.consume(2);this.#info.payloadLength=buffer.readUInt16BE(0);this.#state=parserStates.READ_DATA;if(!this.#validatePayloadLength()){return}}else if(this.#state===parserStates.PAYLOADLENGTH_64){if(this.#byteOffset<8){return callback()}const buffer=this.consume(8);const upper=buffer.readUInt32BE(0);const lower=buffer.readUInt32BE(4);if(upper!==0||lower>2**31-1){failWebsocketConnection(this.#handler,1009,"Received payload length > 2^31 bytes.");return}this.#info.payloadLength=lower;this.#state=parserStates.READ_DATA;if(!this.#validatePayloadLength()){return}}else if(this.#state===parserStates.READ_DATA){if(this.#byteOffset<this.#info.payloadLength){return callback()}const body=this.consume(this.#info.payloadLength);if(isControlFrame(this.#info.opcode)){this.#loop=this.parseControlFrame(body);this.#state=parserStates.INFO}else{if(!this.#info.compressed){if(!this.writeFragments(body)){return}if(!this.#info.fragmented&&this.#info.fin){websocketMessageReceived(this.#handler,this.#info.binaryType,this.consumeFragments())}this.#state=parserStates.INFO}else{this.#extensions.get("permessage-deflate").decompress(body,this.#info.fin,(error,data)=>{if(error){const code=error instanceof MessageSizeExceededError?1009:1007;failWebsocketConnection(this.#handler,code,error.message);return}if(!this.writeFragments(data)){return}if(this.#maxPayloadSize>0&&this.#fragmentsBytes>this.#maxPayloadSize){failWebsocketConnection(this.#handler,1009,new MessageSizeExceededError().message);return}if(!this.#info.fin){this.#state=parserStates.INFO;this.#loop=true;this.run(callback);return}websocketMessageReceived(this.#handler,this.#info.binaryType,this.consumeFragments());this.#loop=true;this.#state=parserStates.INFO;this.run(callback)},this.#fragmentsBytes);this.#loop=false;break}}}}}consume(n){if(n>this.#byteOffset){throw new Error("Called consume() before buffers satiated.")}else if(n===0){return emptyBuffer}this.#byteOffset-=n;const first=this.#buffers[0];if(first.length>n){this.#buffers[0]=first.subarray(n,first.length);return first.subarray(0,n)}else if(first.length===n){return this.#buffers.shift()}else{let offset=0;const buffer=Buffer.allocUnsafeSlow(n);while(offset!==n){const next=this.#buffers[0];const length=next.length;if(length+offset===n){buffer.set(this.#buffers.shift(),offset);break}else if(length+offset>n){buffer.set(next.subarray(0,n-offset),offset);this.#buffers[0]=next.subarray(n-offset);break}else{buffer.set(this.#buffers.shift(),offset);offset+=length}}return buffer}}writeFragments(fragment){if(this.#maxFragments>0&&this.#fragments.length===this.#maxFragments){failWebsocketConnection(this.#handler,1008,"Too many message fragments");return false}this.#fragmentsBytes+=fragment.length;this.#fragments.push(fragment);return true}consumeFragments(){const fragments=this.#fragments;if(fragments.length===1){this.#fragmentsBytes=0;return fragments.shift()}let offset=0;const output=Buffer.allocUnsafeSlow(this.#fragmentsBytes);for(let i=0;i<fragments.length;++i){const buffer=fragments[i];output.set(buffer,offset);offset+=buffer.length}this.#fragments=[];this.#fragmentsBytes=0;return output}parseCloseBody(data){assert(data.length!==1);let code;if(data.length>=2){code=data.readUInt16BE(0)}if(code!==void 0&&!isValidStatusCode(code)){return{code:1002,reason:"Invalid status code",error:true}}let reason=data.subarray(2);if(reason[0]===239&&reason[1]===187&&reason[2]===191){reason=reason.subarray(3)}try{reason=utf8Decode(reason)}catch{return{code:1007,reason:"Invalid UTF-8",error:true}}return{code,reason,error:false}}parseControlFrame(body){const{opcode,payloadLength}=this.#info;if(opcode===opcodes.CLOSE){if(payloadLength===1){failWebsocketConnection(this.#handler,1002,"Received close frame with a 1-byte body.");return false}this.#info.closeInfo=this.parseCloseBody(body);if(this.#info.closeInfo.error){const{code,reason}=this.#info.closeInfo;failWebsocketConnection(this.#handler,code,reason);return false}if(!this.#handler.closeState.has(sentCloseFrameState.SENT)&&!this.#handler.closeState.has(sentCloseFrameState.RECEIVED)){let body2=emptyBuffer;if(this.#info.closeInfo.code){body2=Buffer.allocUnsafe(2);body2.writeUInt16BE(this.#info.closeInfo.code,0)}const closeFrame=new WebsocketFrameSend(body2);this.#handler.socket.write(closeFrame.createFrame(opcodes.CLOSE));this.#handler.closeState.add(sentCloseFrameState.SENT)}this.#handler.readyState=states.CLOSING;this.#handler.closeState.add(sentCloseFrameState.RECEIVED);return false}else if(opcode===opcodes.PING){if(!this.#handler.closeState.has(sentCloseFrameState.RECEIVED)){const frame2=new WebsocketFrameSend(body);this.#handler.socket.write(frame2.createFrame(opcodes.PONG));this.#handler.onPing(body)}}else if(opcode===opcodes.PONG){this.#handler.onPong(body)}return true}get closingInfo(){return this.#info.closeInfo}};module.exports={ByteParser}}});var require_sender=__commonJS({"node_modules/undici/lib/web/websocket/sender.js"(exports,module){"use strict";var{WebsocketFrameSend}=require_frame();var{opcodes,sendHints}=require_constants5();var FixedQueue=require_fixed_queue();var SendQueue=class{#queue=new FixedQueue;#running=false;#socket;constructor(socket){this.#socket=socket}add(item,cb,hint){if(hint!==sendHints.blob){if(!this.#running){if(hint===sendHints.text){const{0:head,1:body}=WebsocketFrameSend.createFastTextFrame(item);this.#socket.cork();this.#socket.write(head);this.#socket.write(body,cb);this.#socket.uncork()}else{this.#socket.write(createFrame(item,hint),cb)}}else{const node2={promise:null,callback:cb,frame:createFrame(item,hint)};this.#queue.push(node2)}return}const node={promise:item.arrayBuffer().then(ab=>{node.promise=null;node.frame=createFrame(ab,hint)}),callback:cb,frame:null};this.#queue.push(node);if(!this.#running){this.#run()}}async#run(){this.#running=true;const queue=this.#queue;while(!queue.isEmpty()){const node=queue.shift();if(node.promise!==null){await node.promise}this.#socket.write(node.frame,node.callback);node.callback=node.frame=null}this.#running=false}};function createFrame(data,hint){return new WebsocketFrameSend(toBuffer(data,hint)).createFrame(hint===sendHints.text?opcodes.TEXT:opcodes.BINARY)}function toBuffer(data,hint){switch(hint){case sendHints.text:case sendHints.typedArray:return new Uint8Array(data.buffer,data.byteOffset,data.byteLength);case sendHints.arrayBuffer:case sendHints.blob:return new Uint8Array(data)}}module.exports={SendQueue}}});var require_websocket=__commonJS({"node_modules/undici/lib/web/websocket/websocket.js"(exports,module){"use strict";var{isArrayBuffer}=__require("util/types");var{webidl}=require_webidl();var{URLSerializer}=require_data_url();var{environmentSettingsObject}=require_util3();var{staticPropertyDescriptors,states,sentCloseFrameState,sendHints,opcodes}=require_constants5();var{isConnecting,isEstablished,isClosing,isClosed,isValidSubprotocol,fireEvent,utf8Decode,toArrayBuffer,getURLRecord}=require_util6();var{establishWebSocketConnection,closeWebSocketConnection,failWebsocketConnection}=require_connection();var{ByteParser}=require_receiver();var{kEnumerableProperty}=require_util2();var{getGlobalDispatcher}=require_global2();var{ErrorEvent,CloseEvent,createFastMessageEvent}=require_events();var{SendQueue}=require_sender();var{WebsocketFrameSend}=require_frame();var{channels}=require_diagnostics();function getSocketAddress(socket){if(typeof socket?.address==="function"){return socket.address()}if(typeof socket?.session?.socket?.address==="function"){return socket.session.socket.address()}return null}var WebSocket=class _WebSocket extends EventTarget{#events={open:null,error:null,close:null,message:null};#bufferedAmount=0;#protocol="";#extensions="";#sendQueue;#handler={onConnectionEstablished:(response,extensions)=>this.#onConnectionEstablished(response,extensions),onMessage:(opcode,data)=>this.#onMessage(opcode,data),onParserError:err=>failWebsocketConnection(this.#handler,null,err.message),onParserDrain:()=>this.#onParserDrain(),onSocketData:chunk=>{if(!this.#parser.write(chunk)){this.#handler.socket.pause()}},onSocketError:err=>{this.#handler.readyState=states.CLOSING;if(channels.socketError.hasSubscribers){channels.socketError.publish(err)}this.#handler.socket.destroy()},onSocketClose:()=>this.#onSocketClose(),onPing:body=>{if(channels.ping.hasSubscribers){channels.ping.publish({payload:body,websocket:this})}},onPong:body=>{if(channels.pong.hasSubscribers){channels.pong.publish({payload:body,websocket:this})}},readyState:states.CONNECTING,socket:null,closeState:new Set,controller:null,wasEverConnected:false};#url;#binaryType;#parser;constructor(url,protocols=[]){super();webidl.util.markAsUncloneable(this);const prefix="WebSocket constructor";webidl.argumentLengthCheck(arguments,1,prefix);const options=webidl.converters["DOMString or sequence<DOMString> or WebSocketInit"](protocols,prefix,"options");url=webidl.converters.USVString(url);protocols=options.protocols;const baseURL=environmentSettingsObject.settingsObject.baseUrl;const urlRecord=getURLRecord(url,baseURL);if(typeof protocols==="string"){protocols=[protocols]}if(protocols.length!==new Set(protocols.map(p2=>p2.toLowerCase())).size){throw new DOMException("Invalid Sec-WebSocket-Protocol value","SyntaxError")}if(protocols.length>0&&!protocols.every(p2=>isValidSubprotocol(p2))){throw new DOMException("Invalid Sec-WebSocket-Protocol value","SyntaxError")}this.#url=new URL(urlRecord.href);const client=environmentSettingsObject.settingsObject;this.#handler.controller=establishWebSocketConnection(urlRecord,protocols,client,this.#handler,options);this.#handler.readyState=_WebSocket.CONNECTING;this.#binaryType="blob"}close(code=void 0,reason=void 0){webidl.brandCheck(this,_WebSocket);const prefix="WebSocket.close";if(code!==void 0){code=webidl.converters["unsigned short"](code,prefix,"code",webidl.attributes.Clamp)}if(reason!==void 0){reason=webidl.converters.USVString(reason)}code??=null;reason??="";closeWebSocketConnection(this.#handler,code,reason,true)}send(data){webidl.brandCheck(this,_WebSocket);const prefix="WebSocket.send";webidl.argumentLengthCheck(arguments,1,prefix);data=webidl.converters.WebSocketSendData(data,prefix,"data");if(isConnecting(this.#handler.readyState)){throw new DOMException("Sent before connected.","InvalidStateError")}if(!isEstablished(this.#handler.readyState)||isClosing(this.#handler.readyState)){return}if(typeof data==="string"){const buffer=Buffer.from(data);this.#bufferedAmount+=buffer.byteLength;this.#sendQueue.add(buffer,()=>{this.#bufferedAmount-=buffer.byteLength},sendHints.text)}else if(isArrayBuffer(data)){this.#bufferedAmount+=data.byteLength;this.#sendQueue.add(data,()=>{this.#bufferedAmount-=data.byteLength},sendHints.arrayBuffer)}else if(ArrayBuffer.isView(data)){this.#bufferedAmount+=data.byteLength;this.#sendQueue.add(data,()=>{this.#bufferedAmount-=data.byteLength},sendHints.typedArray)}else if(webidl.is.Blob(data)){this.#bufferedAmount+=data.size;this.#sendQueue.add(data,()=>{this.#bufferedAmount-=data.size},sendHints.blob)}}get readyState(){webidl.brandCheck(this,_WebSocket);return this.#handler.readyState}get bufferedAmount(){webidl.brandCheck(this,_WebSocket);return this.#bufferedAmount}get url(){webidl.brandCheck(this,_WebSocket);return URLSerializer(this.#url)}get extensions(){webidl.brandCheck(this,_WebSocket);return this.#extensions}get protocol(){webidl.brandCheck(this,_WebSocket);return this.#protocol}get onopen(){webidl.brandCheck(this,_WebSocket);return this.#events.open}set onopen(fn){webidl.brandCheck(this,_WebSocket);if(this.#events.open){this.removeEventListener("open",this.#events.open)}const listener=webidl.converters.EventHandlerNonNull(fn);if(listener!==null){this.addEventListener("open",listener);this.#events.open=fn}else{this.#events.open=null}}get onerror(){webidl.brandCheck(this,_WebSocket);return this.#events.error}set onerror(fn){webidl.brandCheck(this,_WebSocket);if(this.#events.error){this.removeEventListener("error",this.#events.error)}const listener=webidl.converters.EventHandlerNonNull(fn);if(listener!==null){this.addEventListener("error",listener);this.#events.error=fn}else{this.#events.error=null}}get onclose(){webidl.brandCheck(this,_WebSocket);return this.#events.close}set onclose(fn){webidl.brandCheck(this,_WebSocket);if(this.#events.close){this.removeEventListener("close",this.#events.close)}const listener=webidl.converters.EventHandlerNonNull(fn);if(listener!==null){this.addEventListener("close",listener);this.#events.close=fn}else{this.#events.close=null}}get onmessage(){webidl.brandCheck(this,_WebSocket);return this.#events.message}set onmessage(fn){webidl.brandCheck(this,_WebSocket);if(this.#events.message){this.removeEventListener("message",this.#events.message)}const listener=webidl.converters.EventHandlerNonNull(fn);if(listener!==null){this.addEventListener("message",listener);this.#events.message=fn}else{this.#events.message=null}}get binaryType(){webidl.brandCheck(this,_WebSocket);return this.#binaryType}set binaryType(type){webidl.brandCheck(this,_WebSocket);if(type!=="blob"&&type!=="arraybuffer"){this.#binaryType="blob"}else{this.#binaryType=type}}#onConnectionEstablished(response,parsedExtensions){this.#handler.socket=response.socket;const webSocketOptions=this.#handler.controller.dispatcher?.webSocketOptions;const maxFragments=webSocketOptions?.maxFragments;const maxPayloadSize=webSocketOptions?.maxPayloadSize;const parser=new ByteParser(this.#handler,parsedExtensions,{maxFragments,maxPayloadSize});parser.on("drain",()=>this.#handler.onParserDrain());parser.on("error",err=>this.#handler.onParserError(err));this.#parser=parser;this.#sendQueue=new SendQueue(response.socket);this.#handler.readyState=states.OPEN;const extensions=response.headersList.get("sec-websocket-extensions");if(extensions!==null){this.#extensions=extensions}const protocol=response.headersList.get("sec-websocket-protocol");if(protocol!==null){this.#protocol=protocol}fireEvent("open",this);if(channels.open.hasSubscribers){const headers=response.headersList.entries;channels.open.publish({address:getSocketAddress(response.socket),protocol:this.#protocol,extensions:this.#extensions,websocket:this,handshakeResponse:{status:response.status,statusText:response.statusText,headers}})}}#onMessage(type,data){if(this.#handler.readyState!==states.OPEN){return}let dataForEvent;if(type===opcodes.TEXT){try{dataForEvent=utf8Decode(data)}catch{failWebsocketConnection(this.#handler,1007,"Received invalid UTF-8 in text frame.");return}}else if(type===opcodes.BINARY){if(this.#binaryType==="blob"){dataForEvent=new Blob([data])}else{dataForEvent=toArrayBuffer(data)}}fireEvent("message",this,createFastMessageEvent,{origin:this.#url.origin,data:dataForEvent})}#onParserDrain(){this.#handler.socket.resume()}#onSocketClose(){const wasClean=this.#handler.closeState.has(sentCloseFrameState.SENT)&&this.#handler.closeState.has(sentCloseFrameState.RECEIVED);let code=1005;let reason="";const result=this.#parser?.closingInfo;if(result&&!result.error){code=result.code??1005;reason=result.reason}this.#handler.readyState=states.CLOSED;if(!this.#handler.closeState.has(sentCloseFrameState.RECEIVED)){code=1006;fireEvent("error",this,(type,init)=>new ErrorEvent(type,init),{error:new TypeError(reason)})}fireEvent("close",this,(type,init)=>new CloseEvent(type,init),{wasClean,code,reason});if(channels.close.hasSubscribers){channels.close.publish({websocket:this,code,reason})}}static ping(ws2,buffer){if(Buffer.isBuffer(buffer)){if(buffer.length>125){throw new TypeError("A PING frame cannot have a body larger than 125 bytes.")}}else if(buffer!==void 0){throw new TypeError("Expected buffer payload")}const readyState=ws2.#handler.readyState;if(isEstablished(readyState)&&!isClosing(readyState)&&!isClosed(readyState)){const frame2=new WebsocketFrameSend(buffer);ws2.#handler.socket.write(frame2.createFrame(opcodes.PING))}}};var{ping}=WebSocket;Reflect.deleteProperty(WebSocket,"ping");WebSocket.CONNECTING=WebSocket.prototype.CONNECTING=states.CONNECTING;WebSocket.OPEN=WebSocket.prototype.OPEN=states.OPEN;WebSocket.CLOSING=WebSocket.prototype.CLOSING=states.CLOSING;WebSocket.CLOSED=WebSocket.prototype.CLOSED=states.CLOSED;Object.defineProperties(WebSocket.prototype,{CONNECTING:staticPropertyDescriptors,OPEN:staticPropertyDescriptors,CLOSING:staticPropertyDescriptors,CLOSED:staticPropertyDescriptors,url:kEnumerableProperty,readyState:kEnumerableProperty,bufferedAmount:kEnumerableProperty,onopen:kEnumerableProperty,onerror:kEnumerableProperty,onclose:kEnumerableProperty,close:kEnumerableProperty,onmessage:kEnumerableProperty,binaryType:kEnumerableProperty,send:kEnumerableProperty,extensions:kEnumerableProperty,protocol:kEnumerableProperty,[Symbol.toStringTag]:{value:"WebSocket",writable:false,enumerable:false,configurable:true}});Object.defineProperties(WebSocket,{CONNECTING:staticPropertyDescriptors,OPEN:staticPropertyDescriptors,CLOSING:staticPropertyDescriptors,CLOSED:staticPropertyDescriptors});webidl.converters["sequence<DOMString>"]=webidl.sequenceConverter(webidl.converters.DOMString);webidl.converters["DOMString or sequence<DOMString>"]=function(V3,prefix,argument){if(webidl.util.Type(V3)===webidl.util.Types.OBJECT&&Symbol.iterator in V3){return webidl.converters["sequence<DOMString>"](V3)}return webidl.converters.DOMString(V3,prefix,argument)};webidl.converters.WebSocketInit=webidl.dictionaryConverter([{key:"protocols",converter:webidl.converters["DOMString or sequence<DOMString>"],defaultValue:()=>[]},{key:"dispatcher",converter:webidl.converters.any,defaultValue:()=>getGlobalDispatcher()},{key:"headers",converter:webidl.nullableConverter(webidl.converters.HeadersInit)}]);webidl.converters["DOMString or sequence<DOMString> or WebSocketInit"]=function(V3){if(webidl.util.Type(V3)===webidl.util.Types.OBJECT&&!(Symbol.iterator in V3)){return webidl.converters.WebSocketInit(V3)}return{protocols:webidl.converters["DOMString or sequence<DOMString>"](V3)}};webidl.converters.WebSocketSendData=function(V3){if(webidl.util.Type(V3)===webidl.util.Types.OBJECT){if(webidl.is.Blob(V3)){return V3}if(webidl.is.BufferSource(V3)){return V3}}return webidl.converters.USVString(V3)};module.exports={WebSocket,ping}}});var require_websocketerror=__commonJS({"node_modules/undici/lib/web/websocket/stream/websocketerror.js"(exports,module){"use strict";var{webidl}=require_webidl();var{validateCloseCodeAndReason}=require_util6();var{kConstruct}=require_symbols();var{kEnumerableProperty}=require_util2();function createInheritableDOMException(){class Test extends DOMException{get reason(){return""}}if(new Test().reason!==void 0){return DOMException}return new Proxy(DOMException,{construct(target,args,newTarget){const instance=Reflect.construct(target,args,target);Object.setPrototypeOf(instance,newTarget.prototype);return instance}})}var WebSocketError=class _WebSocketError extends createInheritableDOMException(){#closeCode;#reason;constructor(message="",init=void 0){message=webidl.converters.DOMString(message,"WebSocketError","message");super(message,"WebSocketError");if(init===kConstruct){return}else if(init!==null){init=webidl.converters.WebSocketCloseInfo(init)}let code=init.closeCode??null;const reason=init.reason??"";validateCloseCodeAndReason(code,reason);if(reason.length!==0&&code===null){code=1e3}this.#closeCode=code;this.#reason=reason}get closeCode(){return this.#closeCode}get reason(){return this.#reason}static createUnvalidatedWebSocketError(message,code,reason){const error=new _WebSocketError(message,kConstruct);error.#closeCode=code;error.#reason=reason;return error}};var{createUnvalidatedWebSocketError}=WebSocketError;delete WebSocketError.createUnvalidatedWebSocketError;Object.defineProperties(WebSocketError.prototype,{closeCode:kEnumerableProperty,reason:kEnumerableProperty,[Symbol.toStringTag]:{value:"WebSocketError",writable:false,enumerable:false,configurable:true}});webidl.is.WebSocketError=webidl.util.MakeTypeAssertion(WebSocketError);module.exports={WebSocketError,createUnvalidatedWebSocketError}}});var require_websocketstream=__commonJS({"node_modules/undici/lib/web/websocket/stream/websocketstream.js"(exports,module){"use strict";var{createDeferredPromise}=require_promise();var{environmentSettingsObject}=require_util3();var{states,opcodes,sentCloseFrameState}=require_constants5();var{webidl}=require_webidl();var{getURLRecord,isValidSubprotocol,isEstablished,utf8Decode}=require_util6();var{establishWebSocketConnection,failWebsocketConnection,closeWebSocketConnection}=require_connection();var{channels}=require_diagnostics();var{WebsocketFrameSend}=require_frame();var{ByteParser}=require_receiver();var{WebSocketError,createUnvalidatedWebSocketError}=require_websocketerror();var{kEnumerableProperty}=require_util2();var{utf8DecodeBytes}=require_encoding();var emittedExperimentalWarning=false;var WebSocketStream=class{#url;#openedPromise;#closedPromise;#readableStream;#readableStreamController;#writableStream;#handshakeAborted=false;#handler={onConnectionEstablished:(response,extensions)=>this.#onConnectionEstablished(response,extensions),onMessage:(opcode,data)=>this.#onMessage(opcode,data),onParserError:err=>failWebsocketConnection(this.#handler,null,err.message),onParserDrain:()=>this.#handler.socket.resume(),onSocketData:chunk=>{if(!this.#parser.write(chunk)){this.#handler.socket.pause()}},onSocketError:err=>{this.#handler.readyState=states.CLOSING;if(channels.socketError.hasSubscribers){channels.socketError.publish(err)}this.#handler.socket.destroy()},onSocketClose:()=>this.#onSocketClose(),onPing:()=>{},onPong:()=>{},readyState:states.CONNECTING,socket:null,closeState:new Set,controller:null,wasEverConnected:false};#parser;constructor(url,options=void 0){if(!emittedExperimentalWarning){process.emitWarning("WebSocketStream is experimental! Expect it to change at any time.",{code:"UNDICI-WSS"});emittedExperimentalWarning=true}webidl.argumentLengthCheck(arguments,1,"WebSocket");url=webidl.converters.USVString(url);if(options!==null){options=webidl.converters.WebSocketStreamOptions(options)}const baseURL=environmentSettingsObject.settingsObject.baseUrl;const urlRecord=getURLRecord(url,baseURL);const protocols=options.protocols;if(protocols.length!==new Set(protocols.map(p2=>p2.toLowerCase())).size){throw new DOMException("Invalid Sec-WebSocket-Protocol value","SyntaxError")}if(protocols.length>0&&!protocols.every(p2=>isValidSubprotocol(p2))){throw new DOMException("Invalid Sec-WebSocket-Protocol value","SyntaxError")}this.#url=urlRecord.toString();this.#openedPromise=createDeferredPromise();this.#closedPromise=createDeferredPromise();if(options.signal!=null){const signal=options.signal;if(signal.aborted){this.#openedPromise.reject(signal.reason);this.#closedPromise.reject(signal.reason);return}signal.addEventListener("abort",()=>{if(!isEstablished(this.#handler.readyState)){failWebsocketConnection(this.#handler);this.#handler.readyState=states.CLOSING;this.#openedPromise.reject(signal.reason);this.#closedPromise.reject(signal.reason);this.#handshakeAborted=true}},{once:true})}const client=environmentSettingsObject.settingsObject;this.#handler.controller=establishWebSocketConnection(urlRecord,protocols,client,this.#handler,options)}get url(){return this.#url.toString()}get opened(){return this.#openedPromise.promise}get closed(){return this.#closedPromise.promise}close(closeInfo=void 0){if(closeInfo!==null){closeInfo=webidl.converters.WebSocketCloseInfo(closeInfo)}const code=closeInfo.closeCode??null;const reason=closeInfo.reason;closeWebSocketConnection(this.#handler,code,reason,true)}#write(chunk){chunk=webidl.converters.WebSocketStreamWrite(chunk);const promise=createDeferredPromise();let data=null;let opcode=null;if(webidl.is.BufferSource(chunk)){data=new Uint8Array(ArrayBuffer.isView(chunk)?new Uint8Array(chunk.buffer,chunk.byteOffset,chunk.byteLength):chunk.slice());opcode=opcodes.BINARY}else{let string;try{string=webidl.converters.DOMString(chunk)}catch(e){promise.reject(e);return promise.promise}data=new TextEncoder().encode(string);opcode=opcodes.TEXT}if(!this.#handler.closeState.has(sentCloseFrameState.SENT)&&!this.#handler.closeState.has(sentCloseFrameState.RECEIVED)){const frame2=new WebsocketFrameSend(data);this.#handler.socket.write(frame2.createFrame(opcode),()=>{promise.resolve(void 0)})}return promise.promise}#onConnectionEstablished(response,parsedExtensions){this.#handler.socket=response.socket;const maxFragments=this.#handler.controller.dispatcher?.webSocketOptions?.maxFragments;const maxPayloadSize=this.#handler.controller.dispatcher?.webSocketOptions?.maxPayloadSize;const parser=new ByteParser(this.#handler,parsedExtensions,{maxFragments,maxPayloadSize});parser.on("drain",()=>this.#handler.onParserDrain());parser.on("error",err=>this.#handler.onParserError(err));this.#parser=parser;this.#handler.readyState=states.OPEN;const extensions=parsedExtensions??"";const protocol=response.headersList.get("sec-websocket-protocol")??"";const readable=new ReadableStream({start:controller=>{this.#readableStreamController=controller},cancel:reason=>this.#cancel(reason)});const writable=new WritableStream({write:chunk=>this.#write(chunk),close:()=>closeWebSocketConnection(this.#handler,null,null),abort:reason=>this.#closeUsingReason(reason)});this.#readableStream=readable;this.#writableStream=writable;this.#openedPromise.resolve({extensions,protocol,readable,writable})}#onMessage(type,data){if(this.#handler.readyState!==states.OPEN){return}let chunk;if(type===opcodes.TEXT){try{chunk=utf8Decode(data)}catch{failWebsocketConnection(this.#handler,1007,"Received invalid UTF-8 in text frame.");return}}else if(type===opcodes.BINARY){chunk=new Uint8Array(data.buffer,data.byteOffset,data.byteLength)}this.#readableStreamController.enqueue(chunk)}#onSocketClose(){const wasClean=this.#handler.closeState.has(sentCloseFrameState.SENT)&&this.#handler.closeState.has(sentCloseFrameState.RECEIVED);this.#handler.readyState=states.CLOSED;if(this.#handshakeAborted){return}if(!this.#handler.wasEverConnected){this.#openedPromise.reject(new WebSocketError("Socket never opened"))}const result=this.#parser?.closingInfo;let code=result?.code??1005;if(!this.#handler.closeState.has(sentCloseFrameState.SENT)&&!this.#handler.closeState.has(sentCloseFrameState.RECEIVED)){code=1006}const reason=result?.reason==null?"":utf8DecodeBytes(Buffer.from(result.reason));if(wasClean){this.#readableStreamController.close();if(!this.#writableStream.locked){this.#writableStream.abort(new DOMException("A closed WebSocketStream cannot be written to","InvalidStateError"))}this.#closedPromise.resolve({closeCode:code,reason})}else{const error=createUnvalidatedWebSocketError("unclean close",code,reason);this.#readableStreamController?.error(error);this.#writableStream?.abort(error);this.#closedPromise.reject(error)}}#closeUsingReason(reason){let code=null;let reasonString="";if(webidl.is.WebSocketError(reason)){code=reason.closeCode;reasonString=reason.reason}closeWebSocketConnection(this.#handler,code,reasonString)}#cancel(reason){this.#closeUsingReason(reason)}};Object.defineProperties(WebSocketStream.prototype,{url:kEnumerableProperty,opened:kEnumerableProperty,closed:kEnumerableProperty,close:kEnumerableProperty,[Symbol.toStringTag]:{value:"WebSocketStream",writable:false,enumerable:false,configurable:true}});webidl.converters.WebSocketStreamOptions=webidl.dictionaryConverter([{key:"protocols",converter:webidl.sequenceConverter(webidl.converters.USVString),defaultValue:()=>[]},{key:"signal",converter:webidl.nullableConverter(webidl.converters.AbortSignal),defaultValue:()=>null}]);webidl.converters.WebSocketCloseInfo=webidl.dictionaryConverter([{key:"closeCode",converter:V3=>webidl.converters["unsigned short"](V3,webidl.attributes.EnforceRange)},{key:"reason",converter:webidl.converters.USVString,defaultValue:()=>""}]);webidl.converters.WebSocketStreamWrite=function(V3){if(typeof V3==="string"){return webidl.converters.USVString(V3)}return webidl.converters.BufferSource(V3)};module.exports={WebSocketStream}}});var require_util7=__commonJS({"node_modules/undici/lib/web/eventsource/util.js"(exports,module){"use strict";function isValidLastEventId(value){return value.indexOf("\0")===-1}function isASCIINumber(value){if(value.length===0)return false;for(let i=0;i<value.length;i++){if(value.charCodeAt(i)<48||value.charCodeAt(i)>57)return false}return true}module.exports={isValidLastEventId,isASCIINumber}}});var require_eventsource_stream=__commonJS({"node_modules/undici/lib/web/eventsource/eventsource-stream.js"(exports,module){"use strict";var{Transform}=__require("stream");var{isASCIINumber,isValidLastEventId}=require_util7();var BOM=[239,187,191];var LF=10;var CR=13;var COLON=58;var SPACE=32;var EventSourceStream=class extends Transform{state;checkBOM=true;crlfCheck=false;eventEndCheck=false;buffer=null;pos=0;event={data:void 0,event:void 0,id:void 0,retry:void 0};constructor(options={}){options.readableObjectMode=true;super(options);this.state=options.eventSourceSettings||{};if(options.push){this.push=options.push}}_transform(chunk,_encoding,callback){if(chunk.length===0){callback();return}if(this.buffer){this.buffer=Buffer.concat([this.buffer,chunk])}else{this.buffer=chunk}if(this.checkBOM){switch(this.buffer.length){case 1:if(this.buffer[0]===BOM[0]){callback();return}this.checkBOM=false;callback();return;case 2:if(this.buffer[0]===BOM[0]&&this.buffer[1]===BOM[1]){callback();return}this.checkBOM=false;break;case 3:if(this.buffer[0]===BOM[0]&&this.buffer[1]===BOM[1]&&this.buffer[2]===BOM[2]){this.buffer=Buffer.alloc(0);this.checkBOM=false;callback();return}this.checkBOM=false;break;default:if(this.buffer[0]===BOM[0]&&this.buffer[1]===BOM[1]&&this.buffer[2]===BOM[2]){this.buffer=this.buffer.subarray(3)}this.checkBOM=false;break}}while(this.pos<this.buffer.length){if(this.eventEndCheck){if(this.crlfCheck){if(this.buffer[this.pos]===LF){this.buffer=this.buffer.subarray(this.pos+1);this.pos=0;this.crlfCheck=false;continue}this.crlfCheck=false}if(this.buffer[this.pos]===LF||this.buffer[this.pos]===CR){if(this.buffer[this.pos]===CR){this.crlfCheck=true}this.buffer=this.buffer.subarray(this.pos+1);this.pos=0;if(this.event.data!==void 0||this.event.event||this.event.id!==void 0||this.event.retry){this.processEvent(this.event)}this.clearEvent();continue}this.eventEndCheck=false;continue}if(this.buffer[this.pos]===LF||this.buffer[this.pos]===CR){if(this.buffer[this.pos]===CR){this.crlfCheck=true}this.parseLine(this.buffer.subarray(0,this.pos),this.event);this.buffer=this.buffer.subarray(this.pos+1);this.pos=0;this.eventEndCheck=true;continue}this.pos++}callback()}parseLine(line,event){if(line.length===0){return}const colonPosition=line.indexOf(COLON);if(colonPosition===0){return}let field="";let value="";if(colonPosition!==-1){field=line.subarray(0,colonPosition).toString("utf8");let valueStart=colonPosition+1;if(line[valueStart]===SPACE){++valueStart}value=line.subarray(valueStart).toString("utf8")}else{field=line.toString("utf8");value=""}switch(field){case"data":if(event[field]===void 0){event[field]=value}else{event[field]+=`
|
|
124
124
|
${value}`}break;case"retry":if(isASCIINumber(value)){event[field]=value}break;case"id":if(isValidLastEventId(value)){event[field]=value}break;case"event":if(value.length>0){event[field]=value}break}}processEvent(event){if(event.retry&&isASCIINumber(event.retry)){this.state.reconnectionTime=parseInt(event.retry,10)}if(event.id!==void 0&&isValidLastEventId(event.id)){this.state.lastEventId=event.id}if(event.data!==void 0){this.push({type:event.event||"message",options:{data:event.data,lastEventId:this.state.lastEventId,origin:this.state.origin}})}}clearEvent(){this.event={data:void 0,event:void 0,id:void 0,retry:void 0}}};module.exports={EventSourceStream}}});var require_eventsource=__commonJS({"node_modules/undici/lib/web/eventsource/eventsource.js"(exports,module){"use strict";var{pipeline}=__require("stream");var{fetching}=require_fetch();var{makeRequest}=require_request2();var{webidl}=require_webidl();var{EventSourceStream}=require_eventsource_stream();var{parseMIMEType}=require_data_url();var{createFastMessageEvent}=require_events();var{isNetworkError}=require_response();var{kEnumerableProperty}=require_util2();var{environmentSettingsObject}=require_util3();var experimentalWarned=false;var defaultReconnectionTime=3e3;var CONNECTING=0;var OPEN=1;var CLOSED=2;var ANONYMOUS2="anonymous";var USE_CREDENTIALS="use-credentials";var EventSource=class _EventSource extends EventTarget{#events={open:null,error:null,message:null};#url;#withCredentials=false;#readyState=CONNECTING;#request=null;#controller=null;#dispatcher;#state;constructor(url,eventSourceInitDict={}){super();webidl.util.markAsUncloneable(this);const prefix="EventSource constructor";webidl.argumentLengthCheck(arguments,1,prefix);if(!experimentalWarned){experimentalWarned=true;process.emitWarning("EventSource is experimental, expect them to change at any time.",{code:"UNDICI-ES"})}url=webidl.converters.USVString(url);eventSourceInitDict=webidl.converters.EventSourceInitDict(eventSourceInitDict,prefix,"eventSourceInitDict");this.#dispatcher=eventSourceInitDict.node.dispatcher||eventSourceInitDict.dispatcher;this.#state={lastEventId:"",reconnectionTime:eventSourceInitDict.node.reconnectionTime};const settings2=environmentSettingsObject;let urlRecord;try{urlRecord=new URL(url,settings2.settingsObject.baseUrl);this.#state.origin=urlRecord.origin}catch(e){throw new DOMException(e,"SyntaxError")}this.#url=urlRecord.href;let corsAttributeState=ANONYMOUS2;if(eventSourceInitDict.withCredentials===true){corsAttributeState=USE_CREDENTIALS;this.#withCredentials=true}const initRequest={redirect:"follow",keepalive:true,mode:"cors",credentials:corsAttributeState==="anonymous"?"same-origin":"omit",referrer:"no-referrer"};initRequest.client=environmentSettingsObject.settingsObject;initRequest.headersList=[["accept",{name:"accept",value:"text/event-stream"}]];initRequest.cache="no-store";initRequest.initiator="other";initRequest.urlList=[new URL(this.#url)];this.#request=makeRequest(initRequest);this.#connect()}get readyState(){return this.#readyState}get url(){return this.#url}get withCredentials(){return this.#withCredentials}#connect(){if(this.#readyState===CLOSED)return;this.#readyState=CONNECTING;const fetchParams={request:this.#request,dispatcher:this.#dispatcher};const processEventSourceEndOfBody=response=>{if(!isNetworkError(response)){return this.#reconnect()}};fetchParams.processResponseEndOfBody=processEventSourceEndOfBody;fetchParams.processResponse=response=>{if(isNetworkError(response)){if(response.aborted){this.close();this.dispatchEvent(new Event("error"));return}else{this.#reconnect();return}}const contentType=response.headersList.get("content-type",true);const mimeType=contentType!==null?parseMIMEType(contentType):"failure";const contentTypeValid=mimeType!=="failure"&&mimeType.essence==="text/event-stream";if(response.status!==200||contentTypeValid===false){this.close();this.dispatchEvent(new Event("error"));return}this.#readyState=OPEN;this.dispatchEvent(new Event("open"));this.#state.origin=response.urlList[response.urlList.length-1].origin;const eventSourceStream=new EventSourceStream({eventSourceSettings:this.#state,push:event=>{this.dispatchEvent(createFastMessageEvent(event.type,event.options))}});pipeline(response.body.stream,eventSourceStream,error=>{if(error?.aborted===false){this.close();this.dispatchEvent(new Event("error"))}})};this.#controller=fetching(fetchParams)}#reconnect(){if(this.#readyState===CLOSED)return;this.#readyState=CONNECTING;this.dispatchEvent(new Event("error"));setTimeout(()=>{if(this.#readyState!==CONNECTING)return;if(this.#state.lastEventId.length){this.#request.headersList.set("last-event-id",this.#state.lastEventId,true)}this.#connect()},this.#state.reconnectionTime)?.unref()}close(){webidl.brandCheck(this,_EventSource);if(this.#readyState===CLOSED)return;this.#readyState=CLOSED;this.#controller.abort();this.#request=null}get onopen(){return this.#events.open}set onopen(fn){if(this.#events.open){this.removeEventListener("open",this.#events.open)}const listener=webidl.converters.EventHandlerNonNull(fn);if(listener!==null){this.addEventListener("open",listener);this.#events.open=fn}else{this.#events.open=null}}get onmessage(){return this.#events.message}set onmessage(fn){if(this.#events.message){this.removeEventListener("message",this.#events.message)}const listener=webidl.converters.EventHandlerNonNull(fn);if(listener!==null){this.addEventListener("message",listener);this.#events.message=fn}else{this.#events.message=null}}get onerror(){return this.#events.error}set onerror(fn){if(this.#events.error){this.removeEventListener("error",this.#events.error)}const listener=webidl.converters.EventHandlerNonNull(fn);if(listener!==null){this.addEventListener("error",listener);this.#events.error=fn}else{this.#events.error=null}}};var constantsPropertyDescriptors={CONNECTING:{__proto__:null,configurable:false,enumerable:true,value:CONNECTING,writable:false},OPEN:{__proto__:null,configurable:false,enumerable:true,value:OPEN,writable:false},CLOSED:{__proto__:null,configurable:false,enumerable:true,value:CLOSED,writable:false}};Object.defineProperties(EventSource,constantsPropertyDescriptors);Object.defineProperties(EventSource.prototype,constantsPropertyDescriptors);Object.defineProperties(EventSource.prototype,{close:kEnumerableProperty,onerror:kEnumerableProperty,onmessage:kEnumerableProperty,onopen:kEnumerableProperty,readyState:kEnumerableProperty,url:kEnumerableProperty,withCredentials:kEnumerableProperty});webidl.converters.EventSourceInitDict=webidl.dictionaryConverter([{key:"withCredentials",converter:webidl.converters.boolean,defaultValue:()=>false},{key:"dispatcher",converter:webidl.converters.any},{key:"node",converter:webidl.dictionaryConverter([{key:"reconnectionTime",converter:webidl.converters["unsigned long"],defaultValue:()=>defaultReconnectionTime},{key:"dispatcher",converter:webidl.converters.any}]),defaultValue:()=>({})}]);module.exports={EventSource,defaultReconnectionTime}}});var require_undici=__commonJS({"node_modules/undici/index.js"(exports,module){"use strict";var Client=require_client();var Dispatcher=require_dispatcher();var Pool2=require_pool();var BalancedPool=require_balanced_pool();var RoundRobinPool=require_round_robin_pool();var Agent2=require_agent();var ProxyAgent2=require_proxy_agent();var Socks5ProxyAgent=require_socks5_proxy_agent();var EnvHttpProxyAgent=require_env_http_proxy_agent();var RetryAgent=require_retry_agent();var H2CClient=require_h2c_client();var errors=require_errors();var util=require_util2();var{InvalidArgumentError}=errors;var api=require_api();var buildConnector=require_connect();var MockClient=require_mock_client();var{MockCallHistory,MockCallHistoryLog}=require_mock_call_history();var MockAgent=require_mock_agent();var MockPool=require_mock_pool();var SnapshotAgent=require_snapshot_agent();var mockErrors=require_mock_errors();var RetryHandler=require_retry_handler();var{getGlobalDispatcher,setGlobalDispatcher}=require_global2();var DecoratorHandler=require_decorator_handler();var RedirectHandler=require_redirect_handler();Object.assign(Dispatcher.prototype,api);module.exports.Dispatcher=Dispatcher;module.exports.Client=Client;module.exports.Pool=Pool2;module.exports.BalancedPool=BalancedPool;module.exports.RoundRobinPool=RoundRobinPool;module.exports.Agent=Agent2;module.exports.ProxyAgent=ProxyAgent2;module.exports.Socks5ProxyAgent=Socks5ProxyAgent;module.exports.EnvHttpProxyAgent=EnvHttpProxyAgent;module.exports.RetryAgent=RetryAgent;module.exports.H2CClient=H2CClient;module.exports.RetryHandler=RetryHandler;module.exports.DecoratorHandler=DecoratorHandler;module.exports.RedirectHandler=RedirectHandler;module.exports.interceptors={redirect:require_redirect(),responseError:require_response_error(),retry:require_retry(),dump:require_dump(),dns:require_dns(),cache:require_cache2(),decompress:require_decompress(),deduplicate:require_deduplicate()};module.exports.cacheStores={MemoryCacheStore:require_memory_cache_store()};var SqliteCacheStore=require_sqlite_cache_store();module.exports.cacheStores.SqliteCacheStore=SqliteCacheStore;module.exports.buildConnector=buildConnector;module.exports.errors=errors;module.exports.util={parseHeaders:util.parseHeaders,headerNameToString:util.headerNameToString};function makeDispatcher(fn){return(url,opts,handler)=>{if(typeof opts==="function"){handler=opts;opts=null}if(!url||typeof url!=="string"&&typeof url!=="object"&&!(url instanceof URL)){throw new InvalidArgumentError("invalid url")}if(opts!=null&&typeof opts!=="object"){throw new InvalidArgumentError("invalid opts")}if(opts&&opts.path!=null){if(typeof opts.path!=="string"){throw new InvalidArgumentError("invalid opts.path")}let path31=opts.path;if(!opts.path.startsWith("/")){path31=`/${path31}`}url=new URL(util.parseOrigin(url).origin+path31)}else{if(!opts){opts=typeof url==="object"?url:{}}url=util.parseURL(url)}const{agent,dispatcher=getGlobalDispatcher()}=opts;if(agent){throw new InvalidArgumentError("unsupported opts.agent. Did you mean opts.client?")}return fn.call(dispatcher,{...opts,origin:url.origin,path:url.search?`${url.pathname}${url.search}`:url.pathname,method:opts.method||(opts.body?"PUT":"GET")},handler)}}module.exports.setGlobalDispatcher=setGlobalDispatcher;module.exports.getGlobalDispatcher=getGlobalDispatcher;var fetchImpl=require_fetch().fetch;var currentFilename=typeof __filename!=="undefined"?__filename:void 0;function appendFetchStackTrace(err,filename){if(!err||typeof err!=="object"){return}const stack=typeof err.stack==="string"?err.stack:"";const normalizedFilename=filename.replace(/\\/g,"/");if(stack&&(stack.includes(filename)||stack.includes(normalizedFilename))){return}const capture2={};Error.captureStackTrace(capture2,appendFetchStackTrace);if(!capture2.stack){return}const captureLines=capture2.stack.split("\n").slice(1).join("\n");err.stack=stack?`${stack}
|
|
125
|
-
${captureLines}`:capture2.stack}module.exports.fetch=function fetch2(init,options=void 0){return fetchImpl(init,options).catch(err=>{if(currentFilename){appendFetchStackTrace(err,currentFilename)}else if(err&&typeof err==="object"){Error.captureStackTrace(err,module.exports.fetch)}throw err})};module.exports.Headers=require_headers().Headers;module.exports.Response=require_response().Response;module.exports.Request=require_request2().Request;module.exports.FormData=require_formdata().FormData;var{setGlobalOrigin,getGlobalOrigin}=require_global();module.exports.setGlobalOrigin=setGlobalOrigin;module.exports.getGlobalOrigin=getGlobalOrigin;var{CacheStorage}=require_cachestorage();var{kConstruct}=require_symbols();module.exports.caches=new CacheStorage(kConstruct);var{deleteCookie,getCookies,getSetCookies,setCookie,parseCookie}=require_cookies();module.exports.deleteCookie=deleteCookie;module.exports.getCookies=getCookies;module.exports.getSetCookies=getSetCookies;module.exports.setCookie=setCookie;module.exports.parseCookie=parseCookie;var{parseMIMEType,serializeAMimeType}=require_data_url();module.exports.parseMIMEType=parseMIMEType;module.exports.serializeAMimeType=serializeAMimeType;var{CloseEvent,ErrorEvent,MessageEvent}=require_events();var{WebSocket,ping}=require_websocket();module.exports.WebSocket=WebSocket;module.exports.CloseEvent=CloseEvent;module.exports.ErrorEvent=ErrorEvent;module.exports.MessageEvent=MessageEvent;module.exports.ping=ping;module.exports.WebSocketStream=require_websocketstream().WebSocketStream;module.exports.WebSocketError=require_websocketerror().WebSocketError;module.exports.request=makeDispatcher(api.request);module.exports.stream=makeDispatcher(api.stream);module.exports.pipeline=makeDispatcher(api.pipeline);module.exports.connect=makeDispatcher(api.connect);module.exports.upgrade=makeDispatcher(api.upgrade);module.exports.MockClient=MockClient;module.exports.MockCallHistory=MockCallHistory;module.exports.MockCallHistoryLog=MockCallHistoryLog;module.exports.MockPool=MockPool;module.exports.MockAgent=MockAgent;module.exports.SnapshotAgent=SnapshotAgent;module.exports.mockErrors=mockErrors;var{EventSource}=require_eventsource();module.exports.EventSource=EventSource;function install(){globalThis.fetch=module.exports.fetch;globalThis.Headers=module.exports.Headers;globalThis.Response=module.exports.Response;globalThis.Request=module.exports.Request;globalThis.FormData=module.exports.FormData;globalThis.WebSocket=module.exports.WebSocket;globalThis.CloseEvent=module.exports.CloseEvent;globalThis.ErrorEvent=module.exports.ErrorEvent;globalThis.MessageEvent=module.exports.MessageEvent;globalThis.EventSource=module.exports.EventSource}module.exports.install=install}});function storagePragmas(walJournalSizeLimitBytes){return["PRAGMA journal_mode = WAL","PRAGMA synchronous = NORMAL","PRAGMA busy_timeout = 5000","PRAGMA foreign_keys = ON",`PRAGMA journal_size_limit = ${walJournalSizeLimitBytes}`,"PRAGMA auto_vacuum = INCREMENTAL"]}var WAL_JOURNAL_SIZE_LIMIT,STORAGE_PRAGMAS;var init_schema=__esm({"src/storage/schema.ts"(){"use strict";WAL_JOURNAL_SIZE_LIMIT=8*1024*1024;STORAGE_PRAGMAS=storagePragmas(WAL_JOURNAL_SIZE_LIMIT)}});import{createRequire}from"module";var require2;var init_driver=__esm({"src/storage/driver.ts"(){"use strict";require2=createRequire(import.meta.url)}});import{createHash as createHash6}from"crypto";import{mkdirSync as mkdirSync4,writeFileSync as writeFileSync2,appendFileSync as appendFileSync2,readFileSync as readFileSync5,existsSync as existsSync4}from"fs";import{dirname as dirname2,join}from"path";var EXT_VALUE_MAX_BYTES;var init_store=__esm({"src/storage/store.ts"(){"use strict";init_logger();init_driver();init_schema();EXT_VALUE_MAX_BYTES=4*1024*1024}});import{createHash as createHash13,randomUUID as randomUUID5}from"crypto";import fs14 from"fs";import net3 from"net";import os8 from"os";import path25 from"path";import{createRequire as createRequire3}from"module";import{pathToFileURL as pathToFileURL2}from"url";import{execFileSync as execFileSync5,spawn as spawn2,spawnSync as spawnSync3}from"child_process";import tls4 from"tls";var import_node_forge=__toESM(require_lib(),1);import crypto from"crypto";import{execFileSync as execFileSync2}from"child_process";import fs from"fs";import os from"os";import path4 from"path";import tls from"tls";import{homedir}from"os";import path from"path";function xdg(envVar,fallback){const v3=process.env[envVar];if(v3&&v3.length>0)return path.resolve(v3);return path.join(homedir(),fallback)}function configDir(){return path.join(xdg("XDG_CONFIG_HOME",".config"),"billion-context")}function configFile(){const env=process.env.BILI_CONFIG_FILE;if(env&&env.length>0)return path.resolve(env);return path.join(configDir(),"billion-context.json")}function cacheDir(){return path.join(xdg("XDG_CACHE_HOME",".cache"),"billion-context")}function stateDir(){return path.join(xdg("XDG_STATE_HOME",".local/state"),"billion-context")}function defaultLogFile(){return path.join(stateDir(),"bili.log")}init_logger();var COMBINED_MAX_AGE_MS=24*60*60*1e3;var PLATFORM_CA_CANDIDATES=process.platform==="darwin"?["/etc/ssl/cert.pem","/private/etc/ssl/cert.pem"]:process.platform==="win32"?[]:["/etc/ssl/certs/ca-certificates.crt","/etc/pki/tls/certs/ca-bundle.crt","/etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem","/etc/ssl/ca-bundle.pem","/etc/ssl/cert.pem"];var import_undici2=__toESM(require_undici(),1);init_logger();init_log_mask();import{execFileSync as execFileSync3}from"child_process";import net from"net";import tls3 from"tls";var import_undici=__toESM(require_undici(),1);import{AsyncLocalStorage as AsyncLocalStorage2}from"async_hooks";var transports=new AsyncLocalStorage2;init_logger();import{readFileSync as readFileSync3,statSync as statSync2}from"fs";import*as tls2 from"tls";import path5 from"path";function createScanner(text,ignoreTrivia=false){const len=text.length;let pos=0,value="",tokenOffset=0,token=16,lineNumber=0,lineStartOffset=0,tokenLineStartOffset=0,prevTokenLineStartOffset=0,scanError=0;function scanHexDigits(count,exact){let digits=0;let value2=0;while(digits<count||!exact){let ch=text.charCodeAt(pos);if(ch>=48&&ch<=57){value2=value2*16+ch-48}else if(ch>=65&&ch<=70){value2=value2*16+ch-65+10}else if(ch>=97&&ch<=102){value2=value2*16+ch-97+10}else{break}pos++;digits++}if(digits<count){value2=-1}return value2}function setPosition(newPosition){pos=newPosition;value="";tokenOffset=0;token=16;scanError=0}function scanNumber(){let start=pos;if(text.charCodeAt(pos)===48){pos++}else{pos++;while(pos<text.length&&isDigit(text.charCodeAt(pos))){pos++}}if(pos<text.length&&text.charCodeAt(pos)===46){pos++;if(pos<text.length&&isDigit(text.charCodeAt(pos))){pos++;while(pos<text.length&&isDigit(text.charCodeAt(pos))){pos++}}else{scanError=3;return text.substring(start,pos)}}let end=pos;if(pos<text.length&&(text.charCodeAt(pos)===69||text.charCodeAt(pos)===101)){pos++;if(pos<text.length&&text.charCodeAt(pos)===43||text.charCodeAt(pos)===45){pos++}if(pos<text.length&&isDigit(text.charCodeAt(pos))){pos++;while(pos<text.length&&isDigit(text.charCodeAt(pos))){pos++}end=pos}else{scanError=3}}return text.substring(start,end)}function scanString(){let result="",start=pos;while(true){if(pos>=len){result+=text.substring(start,pos);scanError=2;break}const ch=text.charCodeAt(pos);if(ch===34){result+=text.substring(start,pos);pos++;break}if(ch===92){result+=text.substring(start,pos);pos++;if(pos>=len){scanError=2;break}const ch2=text.charCodeAt(pos++);switch(ch2){case 34:result+='"';break;case 92:result+="\\";break;case 47:result+="/";break;case 98:result+="\b";break;case 102:result+="\f";break;case 110:result+="\n";break;case 114:result+="\r";break;case 116:result+=" ";break;case 117:const ch3=scanHexDigits(4,true);if(ch3>=0){result+=String.fromCharCode(ch3)}else{scanError=4}break;default:scanError=5}start=pos;continue}if(ch>=0&&ch<=31){if(isLineBreak(ch)){result+=text.substring(start,pos);scanError=2;break}else{scanError=6}}pos++}return result}function scanNext(){value="";scanError=0;tokenOffset=pos;lineStartOffset=lineNumber;prevTokenLineStartOffset=tokenLineStartOffset;if(pos>=len){tokenOffset=len;return token=17}let code=text.charCodeAt(pos);if(isWhiteSpace(code)){do{pos++;value+=String.fromCharCode(code);code=text.charCodeAt(pos)}while(isWhiteSpace(code));return token=15}if(isLineBreak(code)){pos++;value+=String.fromCharCode(code);if(code===13&&text.charCodeAt(pos)===10){pos++;value+="\n"}lineNumber++;tokenLineStartOffset=pos;return token=14}switch(code){case 123:pos++;return token=1;case 125:pos++;return token=2;case 91:pos++;return token=3;case 93:pos++;return token=4;case 58:pos++;return token=6;case 44:pos++;return token=5;case 34:pos++;value=scanString();return token=10;case 47:const start=pos-1;if(text.charCodeAt(pos+1)===47){pos+=2;while(pos<len){if(isLineBreak(text.charCodeAt(pos))){break}pos++}value=text.substring(start,pos);return token=12}if(text.charCodeAt(pos+1)===42){pos+=2;const safeLength=len-1;let commentClosed=false;while(pos<safeLength){const ch=text.charCodeAt(pos);if(ch===42&&text.charCodeAt(pos+1)===47){pos+=2;commentClosed=true;break}pos++;if(isLineBreak(ch)){if(ch===13&&text.charCodeAt(pos)===10){pos++}lineNumber++;tokenLineStartOffset=pos}}if(!commentClosed){pos++;scanError=1}value=text.substring(start,pos);return token=13}value+=String.fromCharCode(code);pos++;return token=16;case 45:value+=String.fromCharCode(code);pos++;if(pos===len||!isDigit(text.charCodeAt(pos))){return token=16}case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:value+=scanNumber();return token=11;default:while(pos<len&&isUnknownContentCharacter(code)){pos++;code=text.charCodeAt(pos)}if(tokenOffset!==pos){value=text.substring(tokenOffset,pos);switch(value){case"true":return token=8;case"false":return token=9;case"null":return token=7}return token=16}value+=String.fromCharCode(code);pos++;return token=16}}function isUnknownContentCharacter(code){if(isWhiteSpace(code)||isLineBreak(code)){return false}switch(code){case 125:case 93:case 123:case 91:case 34:case 58:case 44:case 47:return false}return true}function scanNextNonTrivia(){let result;do{result=scanNext()}while(result>=12&&result<=15);return result}return{setPosition,getPosition:()=>pos,scan:ignoreTrivia?scanNextNonTrivia:scanNext,getToken:()=>token,getTokenValue:()=>value,getTokenOffset:()=>tokenOffset,getTokenLength:()=>pos-tokenOffset,getTokenStartLine:()=>lineStartOffset,getTokenStartCharacter:()=>tokenOffset-prevTokenLineStartOffset,getTokenError:()=>scanError}}function isWhiteSpace(ch){return ch===32||ch===9}function isLineBreak(ch){return ch===10||ch===13}function isDigit(ch){return ch>=48&&ch<=57}var CharacterCodes;(function(CharacterCodes2){CharacterCodes2[CharacterCodes2["lineFeed"]=10]="lineFeed";CharacterCodes2[CharacterCodes2["carriageReturn"]=13]="carriageReturn";CharacterCodes2[CharacterCodes2["space"]=32]="space";CharacterCodes2[CharacterCodes2["_0"]=48]="_0";CharacterCodes2[CharacterCodes2["_1"]=49]="_1";CharacterCodes2[CharacterCodes2["_2"]=50]="_2";CharacterCodes2[CharacterCodes2["_3"]=51]="_3";CharacterCodes2[CharacterCodes2["_4"]=52]="_4";CharacterCodes2[CharacterCodes2["_5"]=53]="_5";CharacterCodes2[CharacterCodes2["_6"]=54]="_6";CharacterCodes2[CharacterCodes2["_7"]=55]="_7";CharacterCodes2[CharacterCodes2["_8"]=56]="_8";CharacterCodes2[CharacterCodes2["_9"]=57]="_9";CharacterCodes2[CharacterCodes2["a"]=97]="a";CharacterCodes2[CharacterCodes2["b"]=98]="b";CharacterCodes2[CharacterCodes2["c"]=99]="c";CharacterCodes2[CharacterCodes2["d"]=100]="d";CharacterCodes2[CharacterCodes2["e"]=101]="e";CharacterCodes2[CharacterCodes2["f"]=102]="f";CharacterCodes2[CharacterCodes2["g"]=103]="g";CharacterCodes2[CharacterCodes2["h"]=104]="h";CharacterCodes2[CharacterCodes2["i"]=105]="i";CharacterCodes2[CharacterCodes2["j"]=106]="j";CharacterCodes2[CharacterCodes2["k"]=107]="k";CharacterCodes2[CharacterCodes2["l"]=108]="l";CharacterCodes2[CharacterCodes2["m"]=109]="m";CharacterCodes2[CharacterCodes2["n"]=110]="n";CharacterCodes2[CharacterCodes2["o"]=111]="o";CharacterCodes2[CharacterCodes2["p"]=112]="p";CharacterCodes2[CharacterCodes2["q"]=113]="q";CharacterCodes2[CharacterCodes2["r"]=114]="r";CharacterCodes2[CharacterCodes2["s"]=115]="s";CharacterCodes2[CharacterCodes2["t"]=116]="t";CharacterCodes2[CharacterCodes2["u"]=117]="u";CharacterCodes2[CharacterCodes2["v"]=118]="v";CharacterCodes2[CharacterCodes2["w"]=119]="w";CharacterCodes2[CharacterCodes2["x"]=120]="x";CharacterCodes2[CharacterCodes2["y"]=121]="y";CharacterCodes2[CharacterCodes2["z"]=122]="z";CharacterCodes2[CharacterCodes2["A"]=65]="A";CharacterCodes2[CharacterCodes2["B"]=66]="B";CharacterCodes2[CharacterCodes2["C"]=67]="C";CharacterCodes2[CharacterCodes2["D"]=68]="D";CharacterCodes2[CharacterCodes2["E"]=69]="E";CharacterCodes2[CharacterCodes2["F"]=70]="F";CharacterCodes2[CharacterCodes2["G"]=71]="G";CharacterCodes2[CharacterCodes2["H"]=72]="H";CharacterCodes2[CharacterCodes2["I"]=73]="I";CharacterCodes2[CharacterCodes2["J"]=74]="J";CharacterCodes2[CharacterCodes2["K"]=75]="K";CharacterCodes2[CharacterCodes2["L"]=76]="L";CharacterCodes2[CharacterCodes2["M"]=77]="M";CharacterCodes2[CharacterCodes2["N"]=78]="N";CharacterCodes2[CharacterCodes2["O"]=79]="O";CharacterCodes2[CharacterCodes2["P"]=80]="P";CharacterCodes2[CharacterCodes2["Q"]=81]="Q";CharacterCodes2[CharacterCodes2["R"]=82]="R";CharacterCodes2[CharacterCodes2["S"]=83]="S";CharacterCodes2[CharacterCodes2["T"]=84]="T";CharacterCodes2[CharacterCodes2["U"]=85]="U";CharacterCodes2[CharacterCodes2["V"]=86]="V";CharacterCodes2[CharacterCodes2["W"]=87]="W";CharacterCodes2[CharacterCodes2["X"]=88]="X";CharacterCodes2[CharacterCodes2["Y"]=89]="Y";CharacterCodes2[CharacterCodes2["Z"]=90]="Z";CharacterCodes2[CharacterCodes2["asterisk"]=42]="asterisk";CharacterCodes2[CharacterCodes2["backslash"]=92]="backslash";CharacterCodes2[CharacterCodes2["closeBrace"]=125]="closeBrace";CharacterCodes2[CharacterCodes2["closeBracket"]=93]="closeBracket";CharacterCodes2[CharacterCodes2["colon"]=58]="colon";CharacterCodes2[CharacterCodes2["comma"]=44]="comma";CharacterCodes2[CharacterCodes2["dot"]=46]="dot";CharacterCodes2[CharacterCodes2["doubleQuote"]=34]="doubleQuote";CharacterCodes2[CharacterCodes2["minus"]=45]="minus";CharacterCodes2[CharacterCodes2["openBrace"]=123]="openBrace";CharacterCodes2[CharacterCodes2["openBracket"]=91]="openBracket";CharacterCodes2[CharacterCodes2["plus"]=43]="plus";CharacterCodes2[CharacterCodes2["slash"]=47]="slash";CharacterCodes2[CharacterCodes2["formFeed"]=12]="formFeed";CharacterCodes2[CharacterCodes2["tab"]=9]="tab"})(CharacterCodes||(CharacterCodes={}));var cachedSpaces=new Array(20).fill(0).map((_3,index)=>{return" ".repeat(index)});var maxCachedValues=200;var cachedBreakLinesWithSpaces={" ":{"\n":new Array(maxCachedValues).fill(0).map((_3,index)=>{return"\n"+" ".repeat(index)}),"\r":new Array(maxCachedValues).fill(0).map((_3,index)=>{return"\r"+" ".repeat(index)}),"\r\n":new Array(maxCachedValues).fill(0).map((_3,index)=>{return"\r\n"+" ".repeat(index)})}," ":{"\n":new Array(maxCachedValues).fill(0).map((_3,index)=>{return"\n"+" ".repeat(index)}),"\r":new Array(maxCachedValues).fill(0).map((_3,index)=>{return"\r"+" ".repeat(index)}),"\r\n":new Array(maxCachedValues).fill(0).map((_3,index)=>{return"\r\n"+" ".repeat(index)})}};var ParseOptions;(function(ParseOptions2){ParseOptions2.DEFAULT={allowTrailingComma:false}})(ParseOptions||(ParseOptions={}));function parse(text,errors=[],options=ParseOptions.DEFAULT){let currentProperty=null;let currentParent=[];const previousParents=[];function onValue(value){if(Array.isArray(currentParent)){currentParent.push(value)}else if(currentProperty!==null){currentParent[currentProperty]=value}}const visitor={onObjectBegin:()=>{const object={};onValue(object);previousParents.push(currentParent);currentParent=object;currentProperty=null},onObjectProperty:name=>{currentProperty=name},onObjectEnd:()=>{currentParent=previousParents.pop()},onArrayBegin:()=>{const array=[];onValue(array);previousParents.push(currentParent);currentParent=array;currentProperty=null},onArrayEnd:()=>{currentParent=previousParents.pop()},onLiteralValue:onValue,onError:(error,offset,length)=>{errors.push({error,offset,length})}};visit(text,visitor,options);return currentParent[0]}function visit(text,visitor,options=ParseOptions.DEFAULT){const _scanner=createScanner(text,false);const _jsonPath=[];let suppressedCallbacks=0;function toNoArgVisit(visitFunction){return visitFunction?()=>suppressedCallbacks===0&&visitFunction(_scanner.getTokenOffset(),_scanner.getTokenLength(),_scanner.getTokenStartLine(),_scanner.getTokenStartCharacter()):()=>true}function toOneArgVisit(visitFunction){return visitFunction?arg=>suppressedCallbacks===0&&visitFunction(arg,_scanner.getTokenOffset(),_scanner.getTokenLength(),_scanner.getTokenStartLine(),_scanner.getTokenStartCharacter()):()=>true}function toOneArgVisitWithPath(visitFunction){return visitFunction?arg=>suppressedCallbacks===0&&visitFunction(arg,_scanner.getTokenOffset(),_scanner.getTokenLength(),_scanner.getTokenStartLine(),_scanner.getTokenStartCharacter(),()=>_jsonPath.slice()):()=>true}function toBeginVisit(visitFunction){return visitFunction?()=>{if(suppressedCallbacks>0){suppressedCallbacks++}else{let cbReturn=visitFunction(_scanner.getTokenOffset(),_scanner.getTokenLength(),_scanner.getTokenStartLine(),_scanner.getTokenStartCharacter(),()=>_jsonPath.slice());if(cbReturn===false){suppressedCallbacks=1}}}:()=>true}function toEndVisit(visitFunction){return visitFunction?()=>{if(suppressedCallbacks>0){suppressedCallbacks--}if(suppressedCallbacks===0){visitFunction(_scanner.getTokenOffset(),_scanner.getTokenLength(),_scanner.getTokenStartLine(),_scanner.getTokenStartCharacter())}}:()=>true}const onObjectBegin=toBeginVisit(visitor.onObjectBegin),onObjectProperty=toOneArgVisitWithPath(visitor.onObjectProperty),onObjectEnd=toEndVisit(visitor.onObjectEnd),onArrayBegin=toBeginVisit(visitor.onArrayBegin),onArrayEnd=toEndVisit(visitor.onArrayEnd),onLiteralValue=toOneArgVisitWithPath(visitor.onLiteralValue),onSeparator=toOneArgVisit(visitor.onSeparator),onComment=toNoArgVisit(visitor.onComment),onError=toOneArgVisit(visitor.onError);const disallowComments=options&&options.disallowComments;const allowTrailingComma=options&&options.allowTrailingComma;function scanNext(){while(true){const token=_scanner.scan();switch(_scanner.getTokenError()){case 4:handleError(14);break;case 5:handleError(15);break;case 3:handleError(13);break;case 1:if(!disallowComments){handleError(11)}break;case 2:handleError(12);break;case 6:handleError(16);break}switch(token){case 12:case 13:if(disallowComments){handleError(10)}else{onComment()}break;case 16:handleError(1);break;case 15:case 14:break;default:return token}}}function handleError(error,skipUntilAfter=[],skipUntil=[]){onError(error);if(skipUntilAfter.length+skipUntil.length>0){let token=_scanner.getToken();while(token!==17){if(skipUntilAfter.indexOf(token)!==-1){scanNext();break}else if(skipUntil.indexOf(token)!==-1){break}token=scanNext()}}}function parseString(isValue){const value=_scanner.getTokenValue();if(isValue){onLiteralValue(value)}else{onObjectProperty(value);_jsonPath.push(value)}scanNext();return true}function parseLiteral(){switch(_scanner.getToken()){case 11:const tokenValue=_scanner.getTokenValue();let value=Number(tokenValue);if(isNaN(value)){handleError(2);value=0}onLiteralValue(value);break;case 7:onLiteralValue(null);break;case 8:onLiteralValue(true);break;case 9:onLiteralValue(false);break;default:return false}scanNext();return true}function parseProperty(){if(_scanner.getToken()!==10){handleError(3,[],[2,5]);return false}parseString(false);if(_scanner.getToken()===6){onSeparator(":");scanNext();if(!parseValue()){handleError(4,[],[2,5])}}else{handleError(5,[],[2,5])}_jsonPath.pop();return true}function parseObject(){onObjectBegin();scanNext();let needsComma=false;while(_scanner.getToken()!==2&&_scanner.getToken()!==17){if(_scanner.getToken()===5){if(!needsComma){handleError(4,[],[])}onSeparator(",");scanNext();if(_scanner.getToken()===2&&allowTrailingComma){break}}else if(needsComma){handleError(6,[],[])}if(!parseProperty()){handleError(4,[],[2,5])}needsComma=true}onObjectEnd();if(_scanner.getToken()!==2){handleError(7,[2],[])}else{scanNext()}return true}function parseArray(){onArrayBegin();scanNext();let isFirstElement=true;let needsComma=false;while(_scanner.getToken()!==4&&_scanner.getToken()!==17){if(_scanner.getToken()===5){if(!needsComma){handleError(4,[],[])}onSeparator(",");scanNext();if(_scanner.getToken()===4&&allowTrailingComma){break}}else if(needsComma){handleError(6,[],[])}if(isFirstElement){_jsonPath.push(0);isFirstElement=false}else{_jsonPath[_jsonPath.length-1]++}if(!parseValue()){handleError(4,[],[4,5])}needsComma=true}onArrayEnd();if(!isFirstElement){_jsonPath.pop()}if(_scanner.getToken()!==4){handleError(8,[4],[])}else{scanNext()}return true}function parseValue(){switch(_scanner.getToken()){case 3:return parseArray();case 1:return parseObject();case 10:return parseString(true);default:return parseLiteral()}}scanNext();if(_scanner.getToken()===17){if(options.allowEmptyContent){return true}handleError(4,[],[]);return false}if(!parseValue()){handleError(4,[],[]);return false}if(_scanner.getToken()!==17){handleError(9,[],[])}return true}var ScanError;(function(ScanError2){ScanError2[ScanError2["None"]=0]="None";ScanError2[ScanError2["UnexpectedEndOfComment"]=1]="UnexpectedEndOfComment";ScanError2[ScanError2["UnexpectedEndOfString"]=2]="UnexpectedEndOfString";ScanError2[ScanError2["UnexpectedEndOfNumber"]=3]="UnexpectedEndOfNumber";ScanError2[ScanError2["InvalidUnicode"]=4]="InvalidUnicode";ScanError2[ScanError2["InvalidEscapeCharacter"]=5]="InvalidEscapeCharacter";ScanError2[ScanError2["InvalidCharacter"]=6]="InvalidCharacter"})(ScanError||(ScanError={}));var SyntaxKind;(function(SyntaxKind2){SyntaxKind2[SyntaxKind2["OpenBraceToken"]=1]="OpenBraceToken";SyntaxKind2[SyntaxKind2["CloseBraceToken"]=2]="CloseBraceToken";SyntaxKind2[SyntaxKind2["OpenBracketToken"]=3]="OpenBracketToken";SyntaxKind2[SyntaxKind2["CloseBracketToken"]=4]="CloseBracketToken";SyntaxKind2[SyntaxKind2["CommaToken"]=5]="CommaToken";SyntaxKind2[SyntaxKind2["ColonToken"]=6]="ColonToken";SyntaxKind2[SyntaxKind2["NullKeyword"]=7]="NullKeyword";SyntaxKind2[SyntaxKind2["TrueKeyword"]=8]="TrueKeyword";SyntaxKind2[SyntaxKind2["FalseKeyword"]=9]="FalseKeyword";SyntaxKind2[SyntaxKind2["StringLiteral"]=10]="StringLiteral";SyntaxKind2[SyntaxKind2["NumericLiteral"]=11]="NumericLiteral";SyntaxKind2[SyntaxKind2["LineCommentTrivia"]=12]="LineCommentTrivia";SyntaxKind2[SyntaxKind2["BlockCommentTrivia"]=13]="BlockCommentTrivia";SyntaxKind2[SyntaxKind2["LineBreakTrivia"]=14]="LineBreakTrivia";SyntaxKind2[SyntaxKind2["Trivia"]=15]="Trivia";SyntaxKind2[SyntaxKind2["Unknown"]=16]="Unknown";SyntaxKind2[SyntaxKind2["EOF"]=17]="EOF"})(SyntaxKind||(SyntaxKind={}));var parse2=parse;var ParseErrorCode;(function(ParseErrorCode2){ParseErrorCode2[ParseErrorCode2["InvalidSymbol"]=1]="InvalidSymbol";ParseErrorCode2[ParseErrorCode2["InvalidNumberFormat"]=2]="InvalidNumberFormat";ParseErrorCode2[ParseErrorCode2["PropertyNameExpected"]=3]="PropertyNameExpected";ParseErrorCode2[ParseErrorCode2["ValueExpected"]=4]="ValueExpected";ParseErrorCode2[ParseErrorCode2["ColonExpected"]=5]="ColonExpected";ParseErrorCode2[ParseErrorCode2["CommaExpected"]=6]="CommaExpected";ParseErrorCode2[ParseErrorCode2["CloseBraceExpected"]=7]="CloseBraceExpected";ParseErrorCode2[ParseErrorCode2["CloseBracketExpected"]=8]="CloseBracketExpected";ParseErrorCode2[ParseErrorCode2["EndOfFileExpected"]=9]="EndOfFileExpected";ParseErrorCode2[ParseErrorCode2["InvalidCommentToken"]=10]="InvalidCommentToken";ParseErrorCode2[ParseErrorCode2["UnexpectedEndOfComment"]=11]="UnexpectedEndOfComment";ParseErrorCode2[ParseErrorCode2["UnexpectedEndOfString"]=12]="UnexpectedEndOfString";ParseErrorCode2[ParseErrorCode2["UnexpectedEndOfNumber"]=13]="UnexpectedEndOfNumber";ParseErrorCode2[ParseErrorCode2["InvalidUnicode"]=14]="InvalidUnicode";ParseErrorCode2[ParseErrorCode2["InvalidEscapeCharacter"]=15]="InvalidEscapeCharacter";ParseErrorCode2[ParseErrorCode2["InvalidCharacter"]=16]="InvalidCharacter"})(ParseErrorCode||(ParseErrorCode={}));function printParseErrorCode(code){switch(code){case 1:return"InvalidSymbol";case 2:return"InvalidNumberFormat";case 3:return"PropertyNameExpected";case 4:return"ValueExpected";case 5:return"ColonExpected";case 6:return"CommaExpected";case 7:return"CloseBraceExpected";case 8:return"CloseBracketExpected";case 9:return"EndOfFileExpected";case 10:return"InvalidCommentToken";case 11:return"UnexpectedEndOfComment";case 12:return"UnexpectedEndOfString";case 13:return"UnexpectedEndOfNumber";case 14:return"InvalidUnicode";case 15:return"InvalidEscapeCharacter";case 16:return"InvalidCharacter"}return"<unknown ParseErrorCode>"}import{readFileSync as readFileSync2,existsSync,mkdirSync as mkdirSync2,writeFileSync}from"fs";import{createHash as createHash3}from"crypto";import{dirname}from"path";init_logger();init_log_mask();import{createHash as createHash2}from"crypto";var BILI_PASSTHROUGH_HEADER="x-bili-passthrough";function hashId(s3){return createHash2("sha256").update(s3,"utf8").digest("hex").slice(0,16)}var DEFAULT_MITM_DOMAINS=["api.anthropic.com","api.openai.com","chatgpt.com"];init_logger();var LOOPBACK_HOSTNAMES=["localhost","127.0.0.1","[::1]"];function isPrivateIPv4(host){const a=Number.parseInt(host.split(".")[0]??"",10);const b3=Number.parseInt(host.split(".")[1]??"",10);if(a===127||a===10||a===0)return true;if(a===172&&b3>=16&&b3<=31)return true;if(a===192&&b3===168)return true;if(a===169&&b3===254)return true;return false}function isPrivateHostname(hostname){let host=hostname.toLowerCase();if(host==="localhost"||host.endsWith(".local")||host.endsWith(".lan")||host.endsWith(".internal"))return true;if(host.startsWith("["))host=host.slice(1,-1);if(host.includes(":")){if(host==="::1"||host==="::")return true;const first=host.split(":")[0]??"";if(/^f[cd]/.test(first))return true;if(/^fe[89ab]/.test(first))return true;const dotted=/::ffff:(\d+\.\d+\.\d+\.\d+)$/.exec(host);if(dotted&&isPrivateIPv4(dotted[1]))return true;const hex=/::ffff:([0-9a-f]{1,4}):([0-9a-f]{1,4})$/.exec(host);if(hex){const w1=Number.parseInt(hex[1],16);const w22=Number.parseInt(hex[2],16);if(isPrivateIPv4(`${w1>>8}.${w1&255}.${w22>>8}.${w22&255}`))return true}return false}if(/^\d+\.\d+\.\d+\.\d+$/.test(host))return isPrivateIPv4(host);return false}function plainHttpTrusted(url,allowPrivate){if(LOOPBACK_HOSTNAMES.includes(url.hostname))return true;return allowPrivate&&isPrivateHostname(url.hostname)}var SUMMARY_DEFAULT_BUDGET={totalTimeoutMs:5e4,targetTimeoutMs:25e3,maxSummaryBytes:64*1024};function resolveRecordedMitmDomains(passed,env=process.env){const fileConfig=loadConfigFile();const enabled=(env.BILI_MITM??(fileConfig.mitm?.enabled===false?"0":"1"))!=="0";if(!enabled)return[];const effective=passed&&passed.length>0?passed.join(","):env.BILI_MITM_DOMAINS;return dedupeDomains([...fileConfig.mitm?.domains??[],...splitCsv(effective)])}function splitCsv(value){if(!value)return[];return value.split(",").map(s3=>s3.trim()).filter(s3=>s3.length>0)}function dedupeDomains(list){const seen=new Set;const out=[];for(const d2 of list){if(!seen.has(d2)){seen.add(d2);out.push(d2)}}return out}var KNOWN_TOP_LEVEL_KEYS=new Set(["port","host","upstream","providersPath","providers","proxy","modelContextLimit","sessionHeader","log","debug","dumpSse","passthrough","autoUpdate","autoRestartOnUpdate","updateTag","advisoryCheck","advisoryUrl","releaseNotesCheck","releaseNotesUrl","upstreamProxy","upstreamProxyMode","logFile","compress","promptCache","mitm","maskHosts","subagentSplit","forkAdoption","affinitySimhash","resumeInheritance","chainContentDetection","chainEgressStamp","stableSystemAnchor","rollout","dsh","compat","imageBilling","imageTokenCap","claude","native","resign","pi","storage","security","network","persist","sessions","plugin","update","diagnostics","fakeCompletion","codexCompact","ccrRetrievalTtlMs","decompressTmpCap","autoModeForge","imageRescale","guardrails"]);var COMPRESS_SETTING_FIELDS=new Set(["modelContextLimit","maxContextLimit","emergencyThresholdPercent","nudgeGrowthTokens","minPressureBenefitTokens","tierNudgeTokens","nudgeModelDecided","nudgeDecisionMaxTokens","preserveRecentMessages","preserveRecentTokens","minCompressRange","minCompressRangeChars","outputHeadroomMaxPct","tiers","protectedLatestTools","protectedTools","neverPreserveRecentTools","preserveRecentTools","visibilityMarkers","rules","injectTool","injectNudge","acknowledgePromptsRisk","absorb","ccr","search","prompts","promptPack","reasoningGuard","outputSteering","priceProfile","reconcile","streamSummary"]);var seenUnknownTopLevelKeySignatures=new Set;function warnUnknownTopLevelKeys(obj){const unknown=Object.keys(obj).filter(key=>!KNOWN_TOP_LEVEL_KEYS.has(key)&&key!=="allowDshCompaction");if(unknown.length===0)return;const signature=[...unknown].sort().join("\0");if(seenUnknownTopLevelKeySignatures.has(signature))return;seenUnknownTopLevelKeySignatures.add(signature);const misplaced=unknown.filter(key=>COMPRESS_SETTING_FIELDS.has(key));const hint=misplaced.length>0?` \u2014 ${misplaced.map(k2=>`"${k2}" belongs under "compress" (did you mean "compress.${k2}"?)`).join("; ")}`:"";log("warn",`[acp-config] ignoring unknown top-level config key(s): ${unknown.join(", ")}${hint}`)}var configFileCache=null;function parseBiliConfig(raw){try{return JSON.parse(raw)}catch{const errors=[];const value=parse2(raw,errors,{allowTrailingComma:true});if(errors.length===0)return value;const first=errors[0];throw new SyntaxError(`invalid JSON/JSONC at ${lineColumnOf(raw,first.offset)}: ${printParseErrorCode(first.error)}`)}}function lineColumnOf(text,offset){let line=1;let column=1;for(let i=0;i<offset&&i<text.length;i++){if(text.charAt(i)==="\n"){line++;column=1}else column++}return`line ${line} column ${column}`}function loadConfigFile(){const path31=configFile();let raw;let value;try{raw=readFileSync2(path31,"utf8").replace(/^\uFEFF/,"");const cached=configFileCache;if(cached&&cached.raw===raw)return cached.value;const parsed=parseBiliConfig(raw);if(parsed&&typeof parsed==="object"&&!Array.isArray(parsed)){const obj=parsed;warnRemovedDshAllowKey(obj);warnUnknownTopLevelKeys(obj);warnInertResignPassthrough(obj);warnInertStripImages(obj);warnInertRemovedCompressKeys(obj);value=obj}else{value={}}}catch(e){if(e.code!=="ENOENT"){log("error",`[acp-config] failed to parse ${path31}: ${String(e)}`)}if(raw!==void 0)value={}}if(raw===void 0||value===void 0)return{};configFileCache={raw,value};return value}var removedDshAllowKeySignature="";function warnRemovedDshAllowKey(obj){const hits=[];if(Object.prototype.hasOwnProperty.call(obj,"allowDshCompaction")&&obj.allowDshCompaction!==null&&obj.allowDshCompaction!==void 0){hits.push('top-level "allowDshCompaction"')}const d2=obj.dsh;if(d2!==null&&typeof d2==="object"&&!Array.isArray(d2)){for(const key of Object.keys(d2))if(key!=="authoredCompaction")hits.push(`dsh.${key}`)}hits.sort();const sig=hits.join(",");if(sig===""||sig===removedDshAllowKeySignature)return;removedDshAllowKeySignature=sig;log("warn",`[acp-config] ${hits.join(", ")} was removed (#3651, superseding #2028) \u2014 value(s) ignored: dsh native compaction is now refused unconditionally by the wire guard on every lane. Delete it from your config to silence this.`)}var RESIGN_BUILTIN_SCHEME="sdk-hmac-sha256";function resolveResignSettings(env=process.env,provider={},scheme=RESIGN_BUILTIN_SCHEME){const key=scheme.trim().toLowerCase();const file=loadConfigFile().resign?.[key]??{};const providerBlock=provider?.[key]??{};const enabled=env.BILI_RESIGN!==void 0?env.BILI_RESIGN!=="0":providerBlock.enabled!==void 0?providerBlock.enabled:file.enabled!==false;const passthrough=env.BILI_RESIGN_PASSTHROUGH!==void 0?env.BILI_RESIGN_PASSTHROUGH==="1"||env.BILI_RESIGN_PASSTHROUGH==="true":providerBlock.passthrough!==void 0?providerBlock.passthrough:file.passthrough===true;const credentialRef=env.BILI_CODEARTS_REF?.trim()||providerBlock.credentialRef||file.credentialRef||void 0;return{enabled,passthrough,credentialRef}}var inertResignPassthroughSignature=null;function warnInertStripImages(obj){const compress=obj.compress;if(!compress||typeof compress!=="object"||Array.isArray(compress))return;const hit=["stripImages","stripImagesKeepRecent"].filter(k2=>compress[k2]!==void 0);const sig=hit.join(",");if(sig===""||sig===seenInertStripImagesSignature)return;seenInertStripImagesSignature=sig;log("warn",`[acp-config] compress.${hit.join("/compress.")} is INERT \u2014 compress.stripImages was removed: media now folds by default (#2640) and decompress({ imageRef }) recovers folded pixels; nothing is stripped from the wire anymore. Remove the key(s) from the config.`)}var seenInertStripImagesSignature="";var INERT_REMOVED_COMPRESS_KEYS=["imageCompression"];var seenInertRemovedCompressKeysSignature="";function warnInertRemovedCompressKeys(obj){const hits=[];const scanBlock=(block,pathPrefix)=>{if(!block||typeof block!=="object"||Array.isArray(block))return;for(const key of INERT_REMOVED_COMPRESS_KEYS){if(block[key]!==void 0)hits.push(`${pathPrefix}.${key}`)}};scanBlock(obj.compress,"compress");const providers=obj.providers;if(providers&&typeof providers==="object"&&!Array.isArray(providers)){for(const[url,entry]of Object.entries(providers)){if(!entry||typeof entry!=="object"||Array.isArray(entry))continue;const p2=entry;scanBlock(p2.compress,`providers["${url}"].compress`);const models=p2.models;if(models&&typeof models==="object"&&!Array.isArray(models)){for(const[model,mEntry]of Object.entries(models)){if(!mEntry||typeof mEntry!=="object"||Array.isArray(mEntry))continue;scanBlock(mEntry.compress,`providers["${url}"].models["${model}"].compress`)}}}}hits.sort();const sig=hits.join(",");if(sig===""||sig===seenInertRemovedCompressKeysSignature)return;seenInertRemovedCompressKeysSignature=sig;log("warn",`[acp-config] ${hits.join(", ")} is INERT \u2014 compress.imageCompression was removed and no longer does anything at any level (image pre-compression + image_full restore channel, #3266). Remove it from the config; images pass through byte-identical.`)}function warnInertResignPassthrough(obj){const inert=[];const consider=(map,providerBlockFor)=>{if(!map||typeof map!=="object"||Array.isArray(map))return;for(const[key,val]of Object.entries(map)){if(key===RESIGN_BUILTIN_SCHEME)continue;const block=val!==null&&typeof val==="object"&&!Array.isArray(val)?val:{};if(block["passthrough"]!==true)continue;const fileBlock=(obj.resign??{})[key];const providerBlock=providerBlockFor(key);const enabled=process.env.BILI_RESIGN!==void 0?process.env.BILI_RESIGN!=="0":providerBlock?.enabled!==void 0?providerBlock.enabled:fileBlock?.enabled!==false;if(enabled)inert.push(key)}};consider(obj.resign,()=>void 0);const providers=obj.providers;if(providers&&typeof providers==="object"&&!Array.isArray(providers)){for(const entry of Object.values(providers)){if(!entry||typeof entry!=="object"||Array.isArray(entry))continue;const pmap=entry.resign;if(pmap===void 0)continue;consider(pmap,key=>(pmap??{})[key])}}inert.sort();const sig=inert.join(",");if(sig===""||sig===inertResignPassthroughSignature)return;inertResignPassthroughSignature=sig;const list=inert.map(k2=>`resign["${k2}"].passthrough`).join(", ");log("warn",`[acp-config] ${list}=true is INERT \u2014 since the #2090 compress-or-refuse contract, unsigned pass-through exists ONLY for the built-in scheme "${RESIGN_BUILTIN_SCHEME}"; those signed requests stay REFUSED until bili ships a re-signer for them. Restore pre-resign handling with resign["<scheme>"].enabled=false or BILI_RESIGN=0 (the upstream will then reject the rewritten bodies).`)}var ZONE_PORT_BASE=18787;function resolveZonePortBase(env=process.env){const fromEnv=Number.parseInt(env.BILI_ZONE_PORT??"",10);if(Number.isInteger(fromEnv)&&fromEnv>0&&fromEnv<65536)return fromEnv;return ZONE_PORT_BASE}function resolveNativeAttachExternal(env=process.env){const fromEnv=(env.BILI_NATIVE_ATTACH_EXTERNAL??"").trim().toLowerCase();if(fromEnv==="1"||fromEnv==="true")return true;if(fromEnv==="0"||fromEnv==="false")return false;return loadConfigFile().native?.attachExternal===true}function resolveNativeAttachLanePriority(){const raw=loadConfigFile().native?.attachLanePriority;if(!Array.isArray(raw))return[];const out=[];for(const item of raw){if(typeof item!=="string")continue;const t=item.trim();if(t.length>0&&!out.includes(t))out.push(t)}return out}function resolveNativeAttachPolicy(env=process.env){const norm=v3=>(v3??"").trim().toLowerCase();const fromEnv=norm(env.BILI_NATIVE_ATTACH_POLICY);if(fromEnv==="global-fallback"||fromEnv==="global")return"global-fallback";if(fromEnv==="own-lane"||fromEnv==="ownlane"||fromEnv==="strict")return"own-lane";const file=norm(loadConfigFile().native?.attachPolicy);if(file==="global-fallback"||file==="global")return"global-fallback";return"own-lane"}function resolveNativeAttachUrl(env=process.env){const fromEnv=(env.BILI_MCP_PROXY??"").trim();if(fromEnv.length>0)return fromEnv;const file=(loadConfigFile().native?.attachUrl??"").trim();return file.length>0?file:void 0}init_schema();function tNumLoose(envName,fileValue){const envRaw=process.env[envName];if(envRaw!==void 0&&envRaw!=="")return Number(envRaw);return typeof fileValue==="number"&&Number.isFinite(fileValue)?fileValue:NaN}function tInt(envName,fileValue){const envRaw=process.env[envName];if(envRaw!==void 0)return Number.parseInt(envRaw,10);return typeof fileValue==="number"&&Number.isFinite(fileValue)?fileValue:NaN}function fileNetwork(){return loadConfigFile().network??{}}function allowPrivateHttpProviders(){const envRaw=process.env.BILI_ALLOW_PRIVATE_HTTP_PROVIDERS;if(envRaw!==void 0)return envRaw==="1"||envRaw==="true";return fileNetwork().allowPrivateHttpProviders===true}var DEFAULT_LIMITS_RECEIVE_BYTES=5*1024*1024*1024;var DEFAULT_LIMITS_DECODED_BYTES=10*1024*1024*1024;var DEFAULT_LIMITS_OUTBOUND_BYTES=5*1024*1024*1024;var DEFAULT_WS_OUTBOUND_BYTES=10*1024*1024;function guardrailBashTimeout(){const n=tNumLoose("BILI_GUARDRAIL_BASH_TIMEOUT",loadConfigFile().guardrails?.bashTimeout);if(!Number.isFinite(n))return 60;return n>0?Math.floor(n):void 0}function guardrailMaxOutputBytes(){const n=tNumLoose("BILI_GUARDRAIL_MAX_OUTPUT_BYTES",loadConfigFile().guardrails?.maxOutputBytes);if(!Number.isFinite(n))return 5e4;return n>0?Math.floor(n):void 0}function guardrailRepetition(){const envRaw=process.env.BILI_GUARDRAIL_REPETITION;if(envRaw!==void 0)return!(envRaw==="0"||envRaw==="false");return loadConfigFile().guardrails?.repetition!==false}function maxSessions(){const envRaw=process.env.BILI_MAX_SESSIONS;const v3=envRaw!==void 0?Number.parseInt(envRaw,10):(()=>{const f2=loadConfigFile().sessions?.max;return typeof f2==="number"&&Number.isFinite(f2)?f2:NaN})();return Math.max(1,v3||256)}function sessionResidentMaxBytes(){const v3=tInt("BILI_SESSION_RESIDENT_MAX_BYTES",loadConfigFile().sessions?.residentMaxBytes);return Number.isFinite(v3)&&v3>=0?Math.floor(v3):512*1024*1024}function updateRegistryBase(){const envRaw=process.env.BILI_UPDATE_REGISTRY;if(envRaw!==void 0&&envRaw.trim().length>0)return envRaw.trim();const f2=loadConfigFile().update?.registry;return typeof f2==="string"&&f2.trim().length>0?f2.trim():void 0}function updateCheckIntervalMs(){const v3=tNumLoose("BILI_UPDATE_CHECK_INTERVAL_MS",loadConfigFile().update?.checkIntervalMs);return Number.isFinite(v3)&&v3>0?Math.floor(v3):3*60*1e3}var MAX_REQUEST_BYTES=100*1024*1024;var MAX_DECODED_REQUEST_BYTES=2*MAX_REQUEST_BYTES;var UPSTREAM_TIMEOUT_MS=12*60*1e3;import fs3 from"fs";import os3 from"os";import path7 from"path";import fs2 from"fs";import os2 from"os";import path6 from"path";var TOML_KEY_PART_RE=new RegExp(String.raw`^(?:[A-Za-z0-9_-]+|"(?:[^"\\\n]|\\.)*"|'(?:[^'\n])*')(?:\.(?:[A-Za-z0-9_-]+|"(?:[^"\\\n]|\\.)*"|'(?:[^'\n])*'))*$`);init_log_mask();import{createHash as createHash4,randomUUID}from"crypto";import fs4 from"fs";import os4 from"os";import path8 from"path";function isProxyInstanceFile(v3){return v3!==void 0&&"instanceId"in v3}function readProxyInstanceFile(file){let raw;try{raw=fs4.readFileSync(file??instanceFilePath(),"utf8").trim()}catch{return void 0}if(raw.startsWith("{")){try{const parsed=JSON.parse(raw);if(typeof parsed.origin==="string"&&/^https?:\/\/\S+$/.test(parsed.origin)){const windows={};if(parsed.modelWindows&&typeof parsed.modelWindows==="object"){for(const[k2,v3]of Object.entries(parsed.modelWindows)){const n=Number(v3);if(Number.isFinite(n)&&n>0)windows[k2]=n}}const maxOutputs={};if(parsed.modelMaxOutputs&&typeof parsed.modelMaxOutputs==="object"){for(const[k2,v3]of Object.entries(parsed.modelMaxOutputs)){const n=Number(v3);if(Number.isFinite(n)&&n>0)maxOutputs[k2]=n}}return{origin:parsed.origin,instanceId:typeof parsed.instanceId==="string"?parsed.instanceId:"",pid:typeof parsed.pid==="number"?parsed.pid:0,startedAt:typeof parsed.startedAt==="number"?parsed.startedAt:0,host:typeof parsed.host==="string"?parsed.host:"",port:typeof parsed.port==="number"?parsed.port:0,passthrough:Boolean(parsed.passthrough),mitmDomains:Array.isArray(parsed.mitmDomains)?parsed.mitmDomains.map(String):[],modelWindows:windows,modelMaxOutputs:Object.keys(maxOutputs).length>0?maxOutputs:void 0,launchToken:typeof parsed.launchToken==="string"?parsed.launchToken:void 0,lane:typeof parsed.lane==="string"&&parsed.lane!==""?parsed.lane:void 0,codeFingerprint:typeof parsed.codeFingerprint==="string"&&parsed.codeFingerprint!==""?parsed.codeFingerprint:void 0}}}catch{}}if(/^https?:\/\/\S+$/.test(raw))return{origin:raw};return void 0}function instanceFilePath(){return path8.join(stateDir(),"proxy-origin")}function portZoneFilePath(){return path8.join(stateDir(),"port-zone.json")}function readZonePort(lane,file=portZoneFilePath()){let raw;try{raw=fs4.readFileSync(file,"utf8")}catch{return void 0}try{const parsed=JSON.parse(raw);const v3=parsed?.lanes?.[lane];if(typeof v3==="number"&&Number.isInteger(v3)&&v3>0&&v3<65536)return v3;return void 0}catch{return void 0}}function writeZonePort(lane,port,file=portZoneFilePath()){if(!Number.isInteger(port)||port<=0||port>=65536)return;let cur={};try{const parsed=JSON.parse(fs4.readFileSync(file,"utf8"));if(parsed!==null&&typeof parsed==="object"&&parsed.lanes!==null&&typeof parsed.lanes==="object")cur=parsed}catch{}atomicWriteJson({lanes:{...cur.lanes??{},[lane]:port}},file)}function lanePreferredPort(lane,env=process.env,file=portZoneFilePath()){return readZonePort(lane,file)??resolveZonePortBase(env)}var scriptFingerprints=new Map;function entryScriptFingerprint(scriptPath){if(!scriptPath)return void 0;const resolved=path8.resolve(scriptPath);const cached=scriptFingerprints.get(resolved);if(cached!==void 0)return cached;let digest;try{digest=createHash4("sha256").update(fs4.readFileSync(resolved)).digest("hex")}catch{return void 0}scriptFingerprints.set(resolved,digest);return digest}function atomicWriteJson(obj,filePath){fs4.mkdirSync(path8.dirname(filePath),{recursive:true});const tempPath=`${filePath}.${process.pid}.${randomUUID()}.tmp`;let descriptor;try{descriptor=fs4.openSync(tempPath,"wx",420);fs4.writeSync(descriptor,JSON.stringify(obj)+"\n",null,"utf8");fs4.fsyncSync(descriptor);fs4.closeSync(descriptor);descriptor=void 0;fs4.renameSync(tempPath,filePath)}catch(error){if(descriptor!==void 0){try{fs4.closeSync(descriptor)}catch{}}try{fs4.unlinkSync(tempPath)}catch{}throw error}}function startingMarkerPath(){return path8.join(stateDir(),"proxy-starting")}function readStartingMarker(file){let raw;try{raw=fs4.readFileSync(file??startingMarkerPath(),"utf8")}catch{return void 0}try{const parsed=JSON.parse(raw);if(typeof parsed.token!=="string"||parsed.token==="")return void 0;if(typeof parsed.pid!=="number"||!Number.isInteger(parsed.pid)||parsed.pid<=0)return void 0;if(typeof parsed.startedAt!=="number")return void 0;return{token:parsed.token,pid:parsed.pid,host:typeof parsed.host==="string"?parsed.host:"",port:typeof parsed.port==="number"?parsed.port:0,startedAt:parsed.startedAt,...typeof parsed.lane==="string"&&parsed.lane!==""?{lane:parsed.lane}:{}}}catch{return void 0}}function claimStartingMarker(marker,file){const filePath=file??startingMarkerPath();let descriptor;try{fs4.mkdirSync(path8.dirname(filePath),{recursive:true});descriptor=fs4.openSync(filePath,"wx",420);fs4.writeSync(descriptor,JSON.stringify(marker)+"\n",null,"utf8");fs4.fsyncSync(descriptor);descriptor=void 0;return true}catch{if(descriptor!==void 0){try{fs4.closeSync(descriptor)}catch{}}return false}}function clearStartingMarker(token,file){const filePath=file??startingMarkerPath();const current=readStartingMarker(filePath);if(current&¤t.token===token){try{fs4.unlinkSync(filePath)}catch{}}}function removeStartingMarker(file){try{fs4.unlinkSync(file??startingMarkerPath())}catch{}}function isPidAlive(pid){if(!Number.isInteger(pid)||pid<=0)return false;try{process.kill(pid,0);return true}catch(err){return err.code==="EPERM"}}function registryDirPath(){return path8.join(stateDir(),"instances")}function legacyRegistryFilePath(){return path8.join(stateDir(),"instances.json")}function safeReadJson(file){try{return JSON.parse(fs4.readFileSync(file,"utf8"))}catch{return void 0}}function coerceEntry(value){if(!value||typeof value!=="object")return void 0;const o=value;if(typeof o.instanceId!=="string"||o.instanceId==="")return void 0;const windows={};if(o.modelWindows&&typeof o.modelWindows==="object"){for(const[k2,v3]of Object.entries(o.modelWindows)){const n=Number(v3);if(Number.isFinite(n)&&n>0)windows[k2]=n}}const maxOutputs={};if(o.modelMaxOutputs&&typeof o.modelMaxOutputs==="object"){for(const[k2,v3]of Object.entries(o.modelMaxOutputs)){const n=Number(v3);if(Number.isFinite(n)&&n>0)maxOutputs[k2]=n}}return{instanceId:o.instanceId,pid:typeof o.pid==="number"?o.pid:0,port:typeof o.port==="number"?o.port:0,origin:typeof o.origin==="string"?o.origin:"",startedAt:typeof o.startedAt==="number"?o.startedAt:0,...typeof o.host==="string"&&o.host!==""?{host:o.host}:{},...typeof o.passthrough==="boolean"?{passthrough:o.passthrough}:{},...Array.isArray(o.mitmDomains)?{mitmDomains:o.mitmDomains.map(String)}:{},...Object.keys(windows).length>0?{modelWindows:windows}:{},...Object.keys(maxOutputs).length>0?{modelMaxOutputs:maxOutputs}:{},...typeof o.lane==="string"&&o.lane!==""?{lane:o.lane}:{},...typeof o.codeFingerprint==="string"&&o.codeFingerprint!==""?{codeFingerprint:o.codeFingerprint}:{}}}function readMarkerNames(){try{return fs4.readdirSync(registryDirPath())}catch{return[]}}function readAllRegistryEntries(){const seen=new Set;const out=[];for(const name of readMarkerNames()){if(!name.endsWith(".json"))continue;const entry=coerceEntry(safeReadJson(path8.join(registryDirPath(),name)));if(entry&&!seen.has(entry.instanceId)){seen.add(entry.instanceId);out.push(entry)}}const legacy=safeReadJson(legacyRegistryFilePath());if(legacy&&Array.isArray(legacy.instances)){for(const raw of legacy.instances){const entry=coerceEntry(raw);if(entry&&!seen.has(entry.instanceId)){seen.add(entry.instanceId);out.push(entry)}}}return out}function discoverLiveInstances(){const out=[];for(const e of readAllRegistryEntries()){if(!isPidAlive(e.pid))continue;out.push({origin:e.origin,instanceId:e.instanceId,pid:e.pid,startedAt:e.startedAt,host:e.host??"",port:e.port,passthrough:Boolean(e.passthrough),mitmDomains:e.mitmDomains??[],modelWindows:e.modelWindows??{},modelMaxOutputs:e.modelMaxOutputs,lane:e.lane,codeFingerprint:e.codeFingerprint})}return out}var TWIN_ADOPT_EXIT_CODE=3;import net2 from"net";var CONNECT_PROBE_TIMEOUT_MS=2e3;function originHostPort(origin){try{const u2=new URL(origin);if(u2.protocol!=="http:"&&u2.protocol!=="https:")return void 0;const host=u2.hostname.replace(/^\[|\]$/g,"");if(host==="")return void 0;const port=u2.port!==""?Number(u2.port):u2.protocol==="https:"?443:80;return Number.isInteger(port)&&port>0?{host,port}:void 0}catch{return void 0}}function attemptConnect(host,port,timeoutMs){return new Promise(resolve=>{let settled=false;const settle=outcome=>{if(settled)return;settled=true;socket.destroy();resolve(outcome)};const socket=net2.connect({host,port});socket.setTimeout(timeoutMs);socket.once("connect",()=>settle({ok:true}));socket.once("timeout",()=>settle({ok:false,detail:`connect timeout after ${timeoutMs}ms`}));socket.once("error",err=>settle({ok:false,detail:typeof err.code==="string"&&err.code.length>0?err.code:String(err.message??err)}))})}async function tcpConnectable(origin,timeoutMs=CONNECT_PROBE_TIMEOUT_MS){const hp=originHostPort(origin);if(hp===void 0)return false;const outcome=await attemptConnect(hp.host,hp.port,timeoutMs);return outcome.ok}import fs12 from"fs";import path18 from"path";import os7 from"os";import crypto4 from"crypto";import{execFileSync as execFileSync4,spawnSync as spawnSync2}from"child_process";import{fileURLToPath as fileURLToPath4}from"url";import fs5 from"fs";import path9 from"path";import{execFile,spawnSync}from"child_process";import{promisify}from"util";var DSH_PACKAGE="billion-context";var DSH_EXEC_TIMEOUT_MS=5*60*1e3;var pExecFile=promisify(execFile);import fs6 from"fs";import path10 from"path";import{execFile as execFile2}from"child_process";import{promisify as promisify2}from"util";var PI_NPM_SPEC="npm:billion-context";var PI_EXEC_TIMEOUT_MS=5*60*1e3;var pExecFile2=promisify2(execFile2);import{readFile as readFile2,writeFile as writeFile2,mkdir as mkdir2,access,constants,rm,cp,unlink as unlink2,lstat,stat,rename as rename2,mkdtemp,readdir}from"fs/promises";import{execFile as execFile3,spawn}from"child_process";import{realpathSync}from"fs";import crypto2 from"crypto";import Qr from"events";import I from"fs";import{EventEmitter as Di}from"events";import Cs from"stream";import{StringDecoder as Hr}from"string_decoder";import cr from"path";import Kt from"fs";import{dirname as Fn,parse as kn}from"path";import{EventEmitter as Dn}from"events";import zi from"assert";import{Buffer as Ot}from"buffer";import*as Ps from"zlib";import en from"zlib";import{posix as Zt}from"path";import{basename as _n}from"path";import mi from"fs";import X from"fs";import js from"path";import{win32 as Pn}from"path";import ar from"path";import Br from"fs";import co from"assert";import{randomBytes as Mr}from"crypto";import u from"fs";import R from"path";import pr from"fs";import wi from"fs";import we from"path";import k from"fs";import ro from"fs/promises";import Si from"path";import{join as xr}from"path";import v from"fs";import Pr from"path";var zr=Object.defineProperty;var Ur=(s3,t)=>{for(var e in t)zr(s3,e,{get:t[e],enumerable:true})};var Ds=typeof process=="object"&&process?process:{stdout:null,stderr:null};var Wr=s3=>!!s3&&typeof s3=="object"&&(s3 instanceof A||s3 instanceof Cs||Gr(s3)||Zr(s3));var Gr=s3=>!!s3&&typeof s3=="object"&&s3 instanceof Di&&typeof s3.pipe=="function"&&s3.pipe!==Cs.Writable.prototype.pipe;var Zr=s3=>!!s3&&typeof s3=="object"&&s3 instanceof Di&&typeof s3.write=="function"&&typeof s3.end=="function";var Q=Symbol("EOF");var J=Symbol("maybeEmitEnd");var nt=Symbol("emittedEnd");var De=Symbol("emittingEnd");var qt=Symbol("emittedError");var Ne=Symbol("closed");var Ns=Symbol("read");var Ae=Symbol("flush");var As=Symbol("flushChunk");var z=Symbol("encoding");var Mt=Symbol("decoder");var g=Symbol("flowing");var Qt=Symbol("paused");var Bt=Symbol("resume");var b=Symbol("buffer");var N=Symbol("pipes");var _=Symbol("bufferLength");var bi=Symbol("bufferPush");var Ie=Symbol("bufferShift");var L=Symbol("objectMode");var S=Symbol("destroyed");var _i=Symbol("error");var Oi=Symbol("emitData");var Is=Symbol("emitEnd");var Ti=Symbol("emitEnd2");var Z=Symbol("async");var xi=Symbol("abort");var Ce=Symbol("aborted");var Jt=Symbol("signal");var Rt=Symbol("dataListeners");var C=Symbol("discarded");var jt=s3=>Promise.resolve().then(s3);var Yr=s3=>s3();var Kr=s3=>s3==="end"||s3==="finish"||s3==="prefinish";var Vr=s3=>s3 instanceof ArrayBuffer||!!s3&&typeof s3=="object"&&s3.constructor&&s3.constructor.name==="ArrayBuffer"&&s3.byteLength>=0;var $r=s3=>!Buffer.isBuffer(s3)&&ArrayBuffer.isView(s3);var Fe=class{src;dest;opts;ondrain;constructor(t,e,i){this.src=t,this.dest=e,this.opts=i,this.ondrain=()=>t[Bt](),this.dest.on("drain",this.ondrain)}unpipe(){this.dest.removeListener("drain",this.ondrain)}proxyErrors(t){}end(){this.unpipe(),this.opts.end&&this.dest.end()}};var Li=class extends Fe{unpipe(){this.src.removeListener("error",this.proxyErrors),super.unpipe()}constructor(t,e,i){super(t,e,i),this.proxyErrors=r=>this.dest.emit("error",r),t.on("error",this.proxyErrors)}};var Xr=s3=>!!s3.objectMode;var qr=s3=>!s3.objectMode&&!!s3.encoding&&s3.encoding!=="buffer";var A=class extends Di{[g]=false;[Qt]=false;[N]=[];[b]=[];[L];[z];[Z];[Mt];[Q]=false;[nt]=false;[De]=false;[Ne]=false;[qt]=null;[_]=0;[S]=false;[Jt];[Ce]=false;[Rt]=0;[C]=false;writable=true;readable=true;constructor(...t){let e=t[0]||{};if(super(),e.objectMode&&typeof e.encoding=="string")throw new TypeError("Encoding and objectMode may not be used together");Xr(e)?(this[L]=true,this[z]=null):qr(e)?(this[z]=e.encoding,this[L]=false):(this[L]=false,this[z]=null),this[Z]=!!e.async,this[Mt]=this[z]?new Hr(this[z]):null,e&&e.debugExposeBuffer===true&&Object.defineProperty(this,"buffer",{get:()=>this[b]}),e&&e.debugExposePipes===true&&Object.defineProperty(this,"pipes",{get:()=>this[N]});let{signal:i}=e;i&&(this[Jt]=i,i.aborted?this[xi]():i.addEventListener("abort",()=>this[xi]()))}get bufferLength(){return this[_]}get encoding(){return this[z]}set encoding(t){throw new Error("Encoding must be set at instantiation time")}setEncoding(t){throw new Error("Encoding must be set at instantiation time")}get objectMode(){return this[L]}set objectMode(t){throw new Error("objectMode must be set at instantiation time")}get async(){return this[Z]}set async(t){this[Z]=this[Z]||!!t}[xi](){this[Ce]=true,this.emit("abort",this[Jt]?.reason),this.destroy(this[Jt]?.reason)}get aborted(){return this[Ce]}set aborted(t){}write(t,e,i){if(this[Ce])return false;if(this[Q])throw new Error("write after end");if(this[S])return this.emit("error",Object.assign(new Error("Cannot call write after a stream was destroyed"),{code:"ERR_STREAM_DESTROYED"})),true;typeof e=="function"&&(i=e,e="utf8"),e||(e="utf8");let r=this[Z]?jt:Yr;if(!this[L]&&!Buffer.isBuffer(t)){if($r(t))t=Buffer.from(t.buffer,t.byteOffset,t.byteLength);else if(Vr(t))t=Buffer.from(t);else if(typeof t!="string")throw new Error("Non-contiguous data written to non-objectMode stream")}return this[L]?(this[g]&&this[_]!==0&&this[Ae](true),this[g]?this.emit("data",t):this[bi](t),this[_]!==0&&this.emit("readable"),i&&r(i),this[g]):t.length?(typeof t=="string"&&!(e===this[z]&&!this[Mt]?.lastNeed)&&(t=Buffer.from(t,e)),Buffer.isBuffer(t)&&this[z]&&(t=this[Mt].write(t)),this[g]&&this[_]!==0&&this[Ae](true),this[g]?this.emit("data",t):this[bi](t),this[_]!==0&&this.emit("readable"),i&&r(i),this[g]):(this[_]!==0&&this.emit("readable"),i&&r(i),this[g])}read(t){if(this[S])return null;if(this[C]=false,this[_]===0||t===0||t&&t>this[_])return this[J](),null;this[L]&&(t=null),this[b].length>1&&!this[L]&&(this[b]=[this[z]?this[b].join(""):Buffer.concat(this[b],this[_])]);let e=this[Ns](t||null,this[b][0]);return this[J](),e}[Ns](t,e){if(this[L])this[Ie]();else{let i=e;t===i.length||t===null?this[Ie]():typeof i=="string"?(this[b][0]=i.slice(t),e=i.slice(0,t),this[_]-=t):(this[b][0]=i.subarray(t),e=i.subarray(0,t),this[_]-=t)}return this.emit("data",e),!this[b].length&&!this[Q]&&this.emit("drain"),e}end(t,e,i){return typeof t=="function"&&(i=t,t=void 0),typeof e=="function"&&(i=e,e="utf8"),t!==void 0&&this.write(t,e),i&&this.once("end",i),this[Q]=true,this.writable=false,(this[g]||!this[Qt])&&this[J](),this}[Bt](){this[S]||(!this[Rt]&&!this[N].length&&(this[C]=true),this[Qt]=false,this[g]=true,this.emit("resume"),this[b].length?this[Ae]():this[Q]?this[J]():this.emit("drain"))}resume(){return this[Bt]()}pause(){this[g]=false,this[Qt]=true,this[C]=false}get destroyed(){return this[S]}get flowing(){return this[g]}get paused(){return this[Qt]}[bi](t){this[L]?this[_]+=1:this[_]+=t.length,this[b].push(t)}[Ie](){return this[L]?this[_]-=1:this[_]-=this[b][0].length,this[b].shift()}[Ae](t=false){do;while(this[As](this[Ie]())&&this[b].length);!t&&!this[b].length&&!this[Q]&&this.emit("drain")}[As](t){return this.emit("data",t),this[g]}pipe(t,e){if(this[S])return t;this[C]=false;let i=this[nt];return e=e||{},t===Ds.stdout||t===Ds.stderr?e.end=false:e.end=e.end!==false,e.proxyErrors=!!e.proxyErrors,i?e.end&&t.end():(this[N].push(e.proxyErrors?new Li(this,t,e):new Fe(this,t,e)),this[Z]?jt(()=>this[Bt]()):this[Bt]()),t}unpipe(t){let e=this[N].find(i=>i.dest===t);e&&(this[N].length===1?(this[g]&&this[Rt]===0&&(this[g]=false),this[N]=[]):this[N].splice(this[N].indexOf(e),1),e.unpipe())}addListener(t,e){return this.on(t,e)}on(t,e){let i=super.on(t,e);if(t==="data")this[C]=false,this[Rt]++,!this[N].length&&!this[g]&&this[Bt]();else if(t==="readable"&&this[_]!==0)super.emit("readable");else if(Kr(t)&&this[nt])super.emit(t),this.removeAllListeners(t);else if(t==="error"&&this[qt]){let r=e;this[Z]?jt(()=>r.call(this,this[qt])):r.call(this,this[qt])}return i}removeListener(t,e){return this.off(t,e)}off(t,e){let i=super.off(t,e);return t==="data"&&(this[Rt]=this.listeners("data").length,this[Rt]===0&&!this[C]&&!this[N].length&&(this[g]=false)),i}removeAllListeners(t){let e=super.removeAllListeners(t);return(t==="data"||t===void 0)&&(this[Rt]=0,!this[C]&&!this[N].length&&(this[g]=false)),e}get emittedEnd(){return this[nt]}[J](){!this[De]&&!this[nt]&&!this[S]&&this[b].length===0&&this[Q]&&(this[De]=true,this.emit("end"),this.emit("prefinish"),this.emit("finish"),this[Ne]&&this.emit("close"),this[De]=false)}emit(t,...e){let i=e[0];if(t!=="error"&&t!=="close"&&t!==S&&this[S])return false;if(t==="data")return!this[L]&&!i?false:this[Z]?(jt(()=>this[Oi](i)),true):this[Oi](i);if(t==="end")return this[Is]();if(t==="close"){if(this[Ne]=true,!this[nt]&&!this[S])return false;let n=super.emit("close");return this.removeAllListeners("close"),n}else if(t==="error"){this[qt]=i,super.emit(_i,i);let n=!this[Jt]||this.listeners("error").length?super.emit("error",i):false;return this[J](),n}else if(t==="resume"){let n=super.emit("resume");return this[J](),n}else if(t==="finish"||t==="prefinish"){let n=super.emit(t);return this.removeAllListeners(t),n}let r=super.emit(t,...e);return this[J](),r}[Oi](t){for(let i of this[N])i.dest.write(t)===false&&this.pause();let e=this[C]?false:super.emit("data",t);return this[J](),e}[Is](){return this[nt]?false:(this[nt]=true,this.readable=false,this[Z]?(jt(()=>this[Ti]()),true):this[Ti]())}[Ti](){if(this[Mt]){let e=this[Mt].end();if(e){for(let i of this[N])i.dest.write(e);this[C]||super.emit("data",e)}}for(let e of this[N])e.end();let t=super.emit("end");return this.removeAllListeners("end"),t}async collect(){let t=Object.assign([],{dataLength:0});this[L]||(t.dataLength=0);let e=this.promise();return this.on("data",i=>{t.push(i),this[L]||(t.dataLength+=i.length)}),await e,t}async concat(){if(this[L])throw new Error("cannot concat in objectMode");let t=await this.collect();return this[z]?t.join(""):Buffer.concat(t,t.dataLength)}async promise(){return new Promise((t,e)=>{this.on(S,()=>e(new Error("stream destroyed"))),this.on("error",i=>e(i)),this.on("end",()=>t())})}[Symbol.asyncIterator](){this[C]=false;let t=false,e=async()=>(this.pause(),t=true,{value:void 0,done:true});return{next:()=>{if(t)return e();let r=this.read();if(r!==null)return Promise.resolve({done:false,value:r});if(this[Q])return e();let n,o,h=d2=>{this.off("data",a),this.off("end",l3),this.off(S,c),e(),o(d2)},a=d2=>{this.off("error",h),this.off("end",l3),this.off(S,c),this.pause(),n({value:d2,done:!!this[Q]})},l3=()=>{this.off("error",h),this.off("data",a),this.off(S,c),e(),n({done:true,value:void 0})},c=()=>h(new Error("stream destroyed"));return new Promise((d2,y2)=>{o=y2,n=d2,this.once(S,c),this.once("error",h),this.once("end",l3),this.once("data",a)})},throw:e,return:e,[Symbol.asyncIterator](){return this},[Symbol.asyncDispose]:async()=>{}}}[Symbol.iterator](){this[C]=false;let t=false,e=()=>(this.pause(),this.off(_i,e),this.off(S,e),this.off("end",e),t=true,{done:true,value:void 0}),i=()=>{if(t)return e();let r=this.read();return r===null?e():{done:false,value:r}};return this.once("end",e),this.once(_i,e),this.once(S,e),{next:i,throw:e,return:e,[Symbol.iterator](){return this},[Symbol.dispose]:()=>{}}}destroy(t){if(this[S])return t?this.emit("error",t):this.emit(S),this;this[S]=true,this[C]=true,this[b].length=0,this[_]=0;let e=this;return typeof e.close=="function"&&!this[Ne]&&e.close(),t?this.emit("error",t):this.emit(S),this}static get isStream(){return Wr}};var Jr=I.writev;var ht=Symbol("_autoClose");var H=Symbol("_close");var te=Symbol("_ended");var m=Symbol("_fd");var Ni=Symbol("_finished");var tt=Symbol("_flags");var Ai=Symbol("_flush");var ki=Symbol("_handleChunk");var vi=Symbol("_makeBuf");var ie=Symbol("_mode");var ke=Symbol("_needDrain");var Ut=Symbol("_onerror");var Ht=Symbol("_onopen");var Ii=Symbol("_onread");var Pt=Symbol("_onwrite");var at=Symbol("_open");var U=Symbol("_path");var ot=Symbol("_pos");var Y=Symbol("_queue");var zt=Symbol("_read");var Ci=Symbol("_readSize");var j=Symbol("_reading");var ee=Symbol("_remain");var Fi=Symbol("_size");var ve=Symbol("_write");var gt=Symbol("_writing");var Me=Symbol("_defaultFlag");var bt=Symbol("_errored");var _t=class extends A{[bt]=false;[m];[U];[Ci];[j]=false;[Fi];[ee];[ht];constructor(t,e){if(e=e||{},super(e),this.readable=true,this.writable=false,typeof t!="string")throw new TypeError("path must be a string");this[bt]=false,this[m]=typeof e.fd=="number"?e.fd:void 0,this[U]=t,this[Ci]=e.readSize||16*1024*1024,this[j]=false,this[Fi]=typeof e.size=="number"?e.size:1/0,this[ee]=this[Fi],this[ht]=typeof e.autoClose=="boolean"?e.autoClose:true,typeof this[m]=="number"?this[zt]():this[at]()}get fd(){return this[m]}get path(){return this[U]}write(){throw new TypeError("this is a readable stream")}end(){throw new TypeError("this is a readable stream")}[at](){I.open(this[U],"r",(t,e)=>this[Ht](t,e))}[Ht](t,e){t?this[Ut](t):(this[m]=e,this.emit("open",e),this[zt]())}[vi](){return Buffer.allocUnsafe(Math.min(this[Ci],this[ee]))}[zt](){if(!this[j]){this[j]=true;let t=this[vi]();if(t.length===0)return process.nextTick(()=>this[Ii](null,0,t));I.read(this[m],t,0,t.length,null,(e,i,r)=>this[Ii](e,i,r))}}[Ii](t,e,i){this[j]=false,t?this[Ut](t):this[ki](e,i)&&this[zt]()}[H](){if(this[ht]&&typeof this[m]=="number"){let t=this[m];this[m]=void 0,I.close(t,e=>e?this.emit("error",e):this.emit("close"))}}[Ut](t){this[j]=true,this[H](),this.emit("error",t)}[ki](t,e){let i=false;return this[ee]-=t,t>0&&(i=super.write(t<e.length?e.subarray(0,t):e)),(t===0||this[ee]<=0)&&(i=false,this[H](),super.end()),i}emit(t,...e){switch(t){case"prefinish":case"finish":return false;case"drain":return typeof this[m]=="number"&&this[zt](),false;case"error":return this[bt]?false:(this[bt]=true,super.emit(t,...e));default:return super.emit(t,...e)}}};var Be=class extends _t{[at](){let t=true;try{this[Ht](null,I.openSync(this[U],"r")),t=false}finally{t&&this[H]()}}[zt](){let t=true;try{if(!this[j]){this[j]=true;do{let e=this[vi](),i=e.length===0?0:I.readSync(this[m],e,0,e.length,null);if(!this[ki](i,e))break}while(true);this[j]=false}t=false}finally{t&&this[H]()}}[H](){if(this[ht]&&typeof this[m]=="number"){let t=this[m];this[m]=void 0,I.closeSync(t),this.emit("close")}}};var et=class extends Qr{readable=false;writable=true;[bt]=false;[gt]=false;[te]=false;[Y]=[];[ke]=false;[U];[ie];[ht];[m];[Me];[tt];[Ni]=false;[ot];constructor(t,e){e=e||{},super(e),this[U]=t,this[m]=typeof e.fd=="number"?e.fd:void 0,this[ie]=e.mode===void 0?438:e.mode,this[ot]=typeof e.start=="number"?e.start:void 0,this[ht]=typeof e.autoClose=="boolean"?e.autoClose:true;let i=this[ot]!==void 0?"r+":"w";this[Me]=e.flags===void 0,this[tt]=e.flags===void 0?i:e.flags,this[m]===void 0&&this[at]()}emit(t,...e){if(t==="error"){if(this[bt])return false;this[bt]=true}return super.emit(t,...e)}get fd(){return this[m]}get path(){return this[U]}[Ut](t){this[H](),this[gt]=true,this.emit("error",t)}[at](){I.open(this[U],this[tt],this[ie],(t,e)=>this[Ht](t,e))}[Ht](t,e){this[Me]&&this[tt]==="r+"&&t&&t.code==="ENOENT"?(this[tt]="w",this[at]()):t?this[Ut](t):(this[m]=e,this.emit("open",e),this[gt]||this[Ai]())}end(t,e){return t&&this.write(t,e),this[te]=true,!this[gt]&&!this[Y].length&&typeof this[m]=="number"&&this[Pt](null,0),this}write(t,e){return typeof t=="string"&&(t=Buffer.from(t,e)),this[te]?(this.emit("error",new Error("write() after end()")),false):this[m]===void 0||this[gt]||this[Y].length?(this[Y].push(t),this[ke]=true,false):(this[gt]=true,this[ve](t),true)}[ve](t){I.write(this[m],t,0,t.length,this[ot],(e,i)=>this[Pt](e,i))}[Pt](t,e){t?this[Ut](t):(this[ot]!==void 0&&typeof e=="number"&&(this[ot]+=e),this[Y].length?this[Ai]():(this[gt]=false,this[te]&&!this[Ni]?(this[Ni]=true,this[H](),this.emit("finish")):this[ke]&&(this[ke]=false,this.emit("drain"))))}[Ai](){if(this[Y].length===0)this[te]&&this[Pt](null,0);else if(this[Y].length===1)this[ve](this[Y].pop());else{let t=this[Y];this[Y]=[],Jr(this[m],t,this[ot],(e,i)=>this[Pt](e,i))}}[H](){if(this[ht]&&typeof this[m]=="number"){let t=this[m];this[m]=void 0,I.close(t,e=>e?this.emit("error",e):this.emit("close"))}}};var Wt=class extends et{[at](){let t;if(this[Me]&&this[tt]==="r+")try{t=I.openSync(this[U],this[tt],this[ie])}catch(e){if(e?.code==="ENOENT")return this[tt]="w",this[at]();throw e}else t=I.openSync(this[U],this[tt],this[ie]);this[Ht](null,t)}[H](){if(this[ht]&&typeof this[m]=="number"){let t=this[m];this[m]=void 0,I.closeSync(t),this.emit("close")}}[ve](t){let e=true;try{this[Pt](null,I.writeSync(this[m],t,0,t.length,this[ot])),e=false}finally{if(e)try{this[H]()}catch{}}}};var jr=new Map([["C","cwd"],["f","file"],["z","gzip"],["P","preservePaths"],["U","unlink"],["strip-components","strip"],["stripComponents","strip"],["keep-newer","newer"],["keepNewer","newer"],["keep-newer-files","newer"],["keepNewerFiles","newer"],["k","keep"],["keep-existing","keep"],["keepExisting","keep"],["m","noMtime"],["no-mtime","noMtime"],["p","preserveOwner"],["L","follow"],["h","follow"],["onentry","onReadEntry"]]);var Fs=s3=>!!s3.sync&&!!s3.file;var ks=s3=>!s3.sync&&!!s3.file;var vs=s3=>!!s3.sync&&!s3.file;var Ms=s3=>!s3.sync&&!s3.file;var Bs=s3=>!!s3.file;var tn=s3=>{let t=jr.get(s3);return t||s3};var se=(s3={})=>{if(!s3)return{};let t={};for(let[e,i]of Object.entries(s3)){let r=tn(e);t[r]=i}return t.chmod===void 0&&t.noChmod===false&&(t.chmod=true),delete t.noChmod,t};var K=(s3,t,e,i,r)=>Object.assign((n=[],o,h)=>{Array.isArray(n)&&(o=n,n={}),typeof o=="function"&&(h=o,o=void 0),o=o?Array.from(o):[];let a=se(n);if(r?.(a,o),Fs(a)){if(typeof h=="function")throw new TypeError("callback not supported for sync tar functions");return s3(a,o)}else if(ks(a)){let l3=t(a,o);return h?l3.then(()=>h(),h):l3}else if(vs(a)){if(typeof h=="function")throw new TypeError("callback not supported for sync tar functions");return e(a,o)}else if(Ms(a)){if(typeof h=="function")throw new TypeError("callback only supported with file option");return i(a,o)}throw new Error("impossible options??")},{syncFile:s3,asyncFile:t,syncNoFile:e,asyncNoFile:i,validate:r});var sn=en.constants||{ZLIB_VERNUM:4736};var M=Object.freeze(Object.assign(Object.create(null),{Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_MEM_ERROR:-4,Z_BUF_ERROR:-5,Z_VERSION_ERROR:-6,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,DEFLATE:1,INFLATE:2,GZIP:3,GUNZIP:4,DEFLATERAW:5,INFLATERAW:6,UNZIP:7,BROTLI_DECODE:8,BROTLI_ENCODE:9,Z_MIN_WINDOWBITS:8,Z_MAX_WINDOWBITS:15,Z_DEFAULT_WINDOWBITS:15,Z_MIN_CHUNK:64,Z_MAX_CHUNK:1/0,Z_DEFAULT_CHUNK:16384,Z_MIN_MEMLEVEL:1,Z_MAX_MEMLEVEL:9,Z_DEFAULT_MEMLEVEL:8,Z_MIN_LEVEL:-1,Z_MAX_LEVEL:9,Z_DEFAULT_LEVEL:-1,BROTLI_OPERATION_PROCESS:0,BROTLI_OPERATION_FLUSH:1,BROTLI_OPERATION_FINISH:2,BROTLI_OPERATION_EMIT_METADATA:3,BROTLI_MODE_GENERIC:0,BROTLI_MODE_TEXT:1,BROTLI_MODE_FONT:2,BROTLI_DEFAULT_MODE:0,BROTLI_MIN_QUALITY:0,BROTLI_MAX_QUALITY:11,BROTLI_DEFAULT_QUALITY:11,BROTLI_MIN_WINDOW_BITS:10,BROTLI_MAX_WINDOW_BITS:24,BROTLI_LARGE_MAX_WINDOW_BITS:30,BROTLI_DEFAULT_WINDOW:22,BROTLI_MIN_INPUT_BLOCK_BITS:16,BROTLI_MAX_INPUT_BLOCK_BITS:24,BROTLI_PARAM_MODE:0,BROTLI_PARAM_QUALITY:1,BROTLI_PARAM_LGWIN:2,BROTLI_PARAM_LGBLOCK:3,BROTLI_PARAM_DISABLE_LITERAL_CONTEXT_MODELING:4,BROTLI_PARAM_SIZE_HINT:5,BROTLI_PARAM_LARGE_WINDOW:6,BROTLI_PARAM_NPOSTFIX:7,BROTLI_PARAM_NDIRECT:8,BROTLI_DECODER_RESULT_ERROR:0,BROTLI_DECODER_RESULT_SUCCESS:1,BROTLI_DECODER_RESULT_NEEDS_MORE_INPUT:2,BROTLI_DECODER_RESULT_NEEDS_MORE_OUTPUT:3,BROTLI_DECODER_PARAM_DISABLE_RING_BUFFER_REALLOCATION:0,BROTLI_DECODER_PARAM_LARGE_WINDOW:1,BROTLI_DECODER_NO_ERROR:0,BROTLI_DECODER_SUCCESS:1,BROTLI_DECODER_NEEDS_MORE_INPUT:2,BROTLI_DECODER_NEEDS_MORE_OUTPUT:3,BROTLI_DECODER_ERROR_FORMAT_EXUBERANT_NIBBLE:-1,BROTLI_DECODER_ERROR_FORMAT_RESERVED:-2,BROTLI_DECODER_ERROR_FORMAT_EXUBERANT_META_NIBBLE:-3,BROTLI_DECODER_ERROR_FORMAT_SIMPLE_HUFFMAN_ALPHABET:-4,BROTLI_DECODER_ERROR_FORMAT_SIMPLE_HUFFMAN_SAME:-5,BROTLI_DECODER_ERROR_FORMAT_CL_SPACE:-6,BROTLI_DECODER_ERROR_FORMAT_HUFFMAN_SPACE:-7,BROTLI_DECODER_ERROR_FORMAT_CONTEXT_MAP_REPEAT:-8,BROTLI_DECODER_ERROR_FORMAT_BLOCK_LENGTH_1:-9,BROTLI_DECODER_ERROR_FORMAT_BLOCK_LENGTH_2:-10,BROTLI_DECODER_ERROR_FORMAT_TRANSFORM:-11,BROTLI_DECODER_ERROR_FORMAT_DICTIONARY:-12,BROTLI_DECODER_ERROR_FORMAT_WINDOW_BITS:-13,BROTLI_DECODER_ERROR_FORMAT_PADDING_1:-14,BROTLI_DECODER_ERROR_FORMAT_PADDING_2:-15,BROTLI_DECODER_ERROR_FORMAT_DISTANCE:-16,BROTLI_DECODER_ERROR_DICTIONARY_NOT_SET:-19,BROTLI_DECODER_ERROR_INVALID_ARGUMENTS:-20,BROTLI_DECODER_ERROR_ALLOC_CONTEXT_MODES:-21,BROTLI_DECODER_ERROR_ALLOC_TREE_GROUPS:-22,BROTLI_DECODER_ERROR_ALLOC_CONTEXT_MAP:-25,BROTLI_DECODER_ERROR_ALLOC_RING_BUFFER_1:-26,BROTLI_DECODER_ERROR_ALLOC_RING_BUFFER_2:-27,BROTLI_DECODER_ERROR_ALLOC_BLOCK_TYPE_TREES:-30,BROTLI_DECODER_ERROR_UNREACHABLE:-31},sn));var rn=Ot.concat;var zs=Object.getOwnPropertyDescriptor(Ot,"concat");var nn=s3=>s3;var Bi=zs?.writable===true||zs?.set!==void 0?s3=>{Ot.concat=s3?nn:rn}:s3=>{};var Tt=Symbol("_superWrite");var Gt=class extends Error{code;errno;constructor(t,e){super("zlib: "+t.message,{cause:t}),this.code=t.code,this.errno=t.errno,this.code||(this.code="ZLIB_ERROR"),this.message="zlib: "+t.message,Error.captureStackTrace(this,e??this.constructor)}get name(){return"ZlibError"}};var Pi=Symbol("flushFlag");var re=class extends A{#t=false;#i=false;#s;#n;#r;#e;#o;get sawError(){return this.#t}get handle(){return this.#e}get flushFlag(){return this.#s}constructor(t,e){if(!t||typeof t!="object")throw new TypeError("invalid options for ZlibBase constructor");if(super(t),this.#s=t.flush??0,this.#n=t.finishFlush??0,this.#r=t.fullFlushFlag??0,typeof Ps[e]!="function")throw new TypeError("Compression method not supported: "+e);try{this.#e=new Ps[e](t)}catch(i){throw new Gt(i,this.constructor)}this.#o=i=>{this.#t||(this.#t=true,this.close(),this.emit("error",i))},this.#e?.on("error",i=>this.#o(new Gt(i))),this.once("end",()=>this.close)}close(){this.#e&&(this.#e.close(),this.#e=void 0,this.emit("close"))}reset(){if(!this.#t)return zi(this.#e,"zlib binding closed"),this.#e.reset?.()}flush(t){this.ended||(typeof t!="number"&&(t=this.#r),this.write(Object.assign(Ot.alloc(0),{[Pi]:t})))}end(t,e,i){return typeof t=="function"&&(i=t,e=void 0,t=void 0),typeof e=="function"&&(i=e,e=void 0),t&&(e?this.write(t,e):this.write(t)),this.flush(this.#n),this.#i=true,super.end(i)}get ended(){return this.#i}[Tt](t){return super.write(t)}write(t,e,i){if(typeof e=="function"&&(i=e,e="utf8"),typeof t=="string"&&(t=Ot.from(t,e)),this.#t)return;zi(this.#e,"zlib binding closed");let r=this.#e._handle,n=r.close;r.close=()=>{};let o=this.#e.close;this.#e.close=()=>{},Bi(true);let h;try{let l3=typeof t[Pi]=="number"?t[Pi]:this.#s;h=this.#e._processChunk(t,l3),Bi(false)}catch(l3){Bi(false),this.#o(new Gt(l3,this.write))}finally{this.#e&&(this.#e._handle=r,r.close=n,this.#e.close=o,this.#e.removeAllListeners("error"))}this.#e&&this.#e.on("error",l3=>this.#o(new Gt(l3,this.write)));let a;if(h)if(Array.isArray(h)&&h.length>0){let l3=h[0];a=this[Tt](Ot.from(l3));for(let c=1;c<h.length;c++)a=this[Tt](h[c])}else a=this[Tt](Ot.from(h));return i&&i(),a}};var Pe=class extends re{#t;#i;constructor(t,e){t=t||{},t.flush=t.flush||M.Z_NO_FLUSH,t.finishFlush=t.finishFlush||M.Z_FINISH,t.fullFlushFlag=M.Z_FULL_FLUSH,super(t,e),this.#t=t.level,this.#i=t.strategy}params(t,e){if(!this.sawError){if(!this.handle)throw new Error("cannot switch params when binding is closed");if(!this.handle.params)throw new Error("not supported in this implementation");if(this.#t!==t||this.#i!==e){this.flush(M.Z_SYNC_FLUSH),zi(this.handle,"zlib binding closed");let i=this.handle.flush;this.handle.flush=(r,n)=>{typeof r=="function"&&(n=r,r=this.flushFlag),this.flush(r),n?.()};try{this.handle.params(t,e)}finally{this.handle.flush=i}this.handle&&(this.#t=t,this.#i=e)}}}};var ze=class extends Pe{#t;constructor(t){super(t,"Gzip"),this.#t=t&&!!t.portable}[Tt](t){return this.#t?(this.#t=false,t[9]=255,super[Tt](t)):super[Tt](t)}};var Ue=class extends Pe{constructor(t){super(t,"Unzip")}};var He=class extends re{constructor(t,e){t=t||{},t.flush=t.flush||M.BROTLI_OPERATION_PROCESS,t.finishFlush=t.finishFlush||M.BROTLI_OPERATION_FINISH,t.fullFlushFlag=M.BROTLI_OPERATION_FLUSH,super(t,e)}};var We=class extends He{constructor(t){super(t,"BrotliCompress")}};var Ge=class extends He{constructor(t){super(t,"BrotliDecompress")}};var Ze=class extends re{constructor(t,e){t=t||{},t.flush=t.flush||M.ZSTD_e_continue,t.finishFlush=t.finishFlush||M.ZSTD_e_end,t.fullFlushFlag=M.ZSTD_e_flush,super(t,e)}};var Ye=class extends Ze{constructor(t){super(t,"ZstdCompress")}};var Ke=class extends Ze{constructor(t){super(t,"ZstdDecompress")}};var Us=(s3,t)=>{if(Number.isSafeInteger(s3))s3<0?an(s3,t):hn(s3,t);else throw Error("cannot encode number outside of javascript safe integer range");return t};var hn=(s3,t)=>{t[0]=128;for(var e=t.length;e>1;e--)t[e-1]=s3&255,s3=Math.floor(s3/256)};var an=(s3,t)=>{t[0]=255;var e=false;s3=s3*-1;for(var i=t.length;i>1;i--){var r=s3&255;s3=Math.floor(s3/256),e?t[i-1]=Ws(r):r===0?t[i-1]=0:(e=true,t[i-1]=Gs(r))}};var Hs=s3=>{let t=s3[0],e=t===128?cn(s3.subarray(1,s3.length)):t===255?ln(s3):null;if(e===null)throw Error("invalid base256 encoding");if(!Number.isSafeInteger(e))throw Error("parsed number outside of javascript safe integer range");return e};var ln=s3=>{for(var t=s3.length,e=0,i=false,r=t-1;r>-1;r--){var n=Number(s3[r]),o;i?o=Ws(n):n===0?o=n:(i=true,o=Gs(n)),o!==0&&(e-=o*Math.pow(256,t-r-1))}return e};var cn=s3=>{for(var t=s3.length,e=0,i=t-1;i>-1;i--){var r=Number(s3[i]);r!==0&&(e+=r*Math.pow(256,t-i-1))}return e};var Ws=s3=>(255^s3)&255;var Gs=s3=>(255^s3)+1&255;var Hi={};Ur(Hi,{code:()=>Ve,isCode:()=>ne,isName:()=>dn,name:()=>oe,normalFsTypes:()=>Ui});var ne=s3=>oe.has(s3);var dn=s3=>Ve.has(s3);var Ui=new Set(["0","","1","2","3","4","5","6","7","D"]);var oe=new Map([["0","File"],["","OldFile"],["1","Link"],["2","SymbolicLink"],["3","CharacterDevice"],["4","BlockDevice"],["5","Directory"],["6","FIFO"],["7","ContiguousFile"],["g","GlobalExtendedHeader"],["x","ExtendedHeader"],["A","SolarisACL"],["D","GNUDumpDir"],["I","Inode"],["K","NextFileHasLongLinkpath"],["L","NextFileHasLongPath"],["M","ContinuationFile"],["N","OldGnuLongPath"],["S","SparseFile"],["V","TapeVolumeHeader"],["X","OldExtendedHeader"]]);var Ve=new Map(Array.from(oe).map(s3=>[s3[1],s3[0]]));var un=s3=>s3===void 0||s3<0?void 0:s3;var F=class{cksumValid=false;needPax=false;nullBlock=false;block;path;mode;uid;gid;size;cksum;#t="Unsupported";linkpath;uname;gname;devmaj=0;devmin=0;atime;ctime;mtime;charset;comment;constructor(t,e=0,i,r){Buffer.isBuffer(t)?this.decode(t,e||0,i,r):t&&this.#i(t)}decode(t,e,i,r){if(e||(e=0),!t||!(t.length>=e+512))throw new Error("need 512 bytes for header");let n=xt(t,e+156,1),o=Ui.has(n),h=o?i:void 0,a=o?r:void 0;if(this.path=h?.path??xt(t,e,100),this.mode=h?.mode??a?.mode??lt(t,e+100,8),this.uid=h?.uid??a?.uid??lt(t,e+108,8),this.gid=h?.gid??a?.gid??lt(t,e+116,8),this.size=un(h?.size??a?.size??lt(t,e+124,12)),this.mtime=h?.mtime??a?.mtime??Wi(t,e+136,12),this.cksum=lt(t,e+148,12),a&&this.#i(a,true),h&&this.#i(h),ne(n)&&(this.#t=n||"0"),this.#t==="0"&&this.path.slice(-1)==="/"&&(this.#t="5"),this.#t==="5"&&(this.size=0),this.linkpath=xt(t,e+157,100),t.subarray(e+257,e+265).toString()==="ustar\x0000")if(this.uname=h?.uname??a?.uname??xt(t,e+265,32),this.gname=h?.gname??a?.gname??xt(t,e+297,32),this.devmaj=h?.devmaj??a?.devmaj??lt(t,e+329,8)??0,this.devmin=h?.devmin??a?.devmin??lt(t,e+337,8)??0,t[e+475]!==0){let c=xt(t,e+345,155);this.path=c+"/"+this.path}else{let c=xt(t,e+345,130);c&&(this.path=c+"/"+this.path),this.atime=i?.atime??r?.atime??Wi(t,e+476,12),this.ctime=i?.ctime??r?.ctime??Wi(t,e+488,12)}let l3=256;for(let c=e;c<e+148;c++)l3+=t[c];for(let c=e+156;c<e+512;c++)l3+=t[c];this.cksumValid=l3===this.cksum,this.cksum===void 0&&l3===256&&(this.nullBlock=true)}#i(t,e=false){Object.assign(this,Object.fromEntries(Object.entries(t).filter(([i,r])=>!(r==null||i==="size"&&Number(r)<0||i==="path"&&e||i==="linkpath"&&e||i==="global"))))}encode(t,e=0){if(t||(t=this.block=Buffer.alloc(512)),this.#t==="Unsupported"&&(this.#t="0"),!(t.length>=e+512))throw new Error("need 512 bytes for header");let i=this.ctime||this.atime?130:155,r=mn(this.path||"",i),n=r[0],o=r[1];this.needPax=!!r[2],this.needPax=Lt(t,e,100,n)||this.needPax,this.needPax=ct(t,e+100,8,this.mode)||this.needPax,this.needPax=ct(t,e+108,8,this.uid)||this.needPax,this.needPax=ct(t,e+116,8,this.gid)||this.needPax,this.needPax=ct(t,e+124,12,this.size)||this.needPax,this.needPax=Gi(t,e+136,12,this.mtime)||this.needPax,t[e+156]=Number(this.#t.codePointAt(0)),this.needPax=Lt(t,e+157,100,this.linkpath)||this.needPax,t.write("ustar\x0000",e+257,8),this.needPax=Lt(t,e+265,32,this.uname)||this.needPax,this.needPax=Lt(t,e+297,32,this.gname)||this.needPax,this.needPax=ct(t,e+329,8,this.devmaj)||this.needPax,this.needPax=ct(t,e+337,8,this.devmin)||this.needPax,this.needPax=Lt(t,e+345,i,o)||this.needPax,t[e+475]!==0?this.needPax=Lt(t,e+345,155,o)||this.needPax:(this.needPax=Lt(t,e+345,130,o)||this.needPax,this.needPax=Gi(t,e+476,12,this.atime)||this.needPax,this.needPax=Gi(t,e+488,12,this.ctime)||this.needPax);let h=256;for(let a=e;a<e+148;a++)h+=t[a];for(let a=e+156;a<e+512;a++)h+=t[a];return this.cksum=h,ct(t,e+148,8,this.cksum),this.cksumValid=true,this.needPax}get type(){return this.#t==="Unsupported"?this.#t:oe.get(this.#t)}get typeKey(){return this.#t}set type(t){let e=String(Ve.get(t));if(ne(e)||e==="Unsupported")this.#t=e;else if(ne(t))this.#t=t;else throw new TypeError("invalid entry type: "+t)}};var mn=(s3,t)=>{let i=s3,r="",n,o=Zt.parse(s3).root||".";if(Buffer.byteLength(i)<100)n=[i,r,false];else{r=Zt.dirname(i),i=Zt.basename(i);do Buffer.byteLength(i)<=100&&Buffer.byteLength(r)<=t?n=[i,r,false]:Buffer.byteLength(i)>100&&Buffer.byteLength(r)<=t?n=[i.slice(0,99),r,true]:(i=Zt.join(Zt.basename(r),i),r=Zt.dirname(r));while(r!==o&&n===void 0);n||(n=[s3.slice(0,99),"",true])}return n};var xt=(s3,t,e)=>s3.subarray(t,t+e).toString("utf8").replace(/\0.*/,"");var Wi=(s3,t,e)=>pn(lt(s3,t,e));var pn=s3=>s3===void 0?void 0:new Date(s3*1e3);var lt=(s3,t,e)=>Number(s3[t])&128?Hs(s3.subarray(t,t+e)):wn(s3,t,e);var En=s3=>isNaN(s3)?void 0:s3;var wn=(s3,t,e)=>En(parseInt(s3.subarray(t,t+e).toString("utf8").replace(/\0.*$/,"").trim(),8));var Sn={12:8589934591,8:2097151};var ct=(s3,t,e,i)=>i===void 0?false:i>Sn[e]||i<0?(Us(i,s3.subarray(t,t+e)),true):(yn(s3,t,e,i),false);var yn=(s3,t,e,i)=>s3.write(Rn(i,e),t,e,"ascii");var Rn=(s3,t)=>gn(Math.floor(s3).toString(8),t);var gn=(s3,t)=>(s3.length===t-1?s3:new Array(t-s3.length-1).join("0")+s3+" ")+"\0";var Gi=(s3,t,e,i)=>i===void 0?false:ct(s3,t,e,i.getTime()/1e3);var bn=new Array(156).join("\0");var Lt=(s3,t,e,i)=>i===void 0?false:(s3.write(i+bn,t,e,"utf8"),i.length!==Buffer.byteLength(i)||i.length>e);var ft=class s{atime;mtime;ctime;charset;comment;gid;uid;gname;uname;linkpath;dev;ino;nlink;path;size;mode;global;constructor(t,e=false){this.atime=t.atime,this.charset=t.charset,this.comment=t.comment,this.ctime=t.ctime,this.dev=t.dev,this.gid=t.gid,this.global=e,this.gname=t.gname,this.ino=t.ino,this.linkpath=t.linkpath,this.mtime=t.mtime,this.nlink=t.nlink,this.path=t.path,this.size=t.size,this.uid=t.uid,this.uname=t.uname}encode(){let t=this.encodeBody();if(t==="")return Buffer.allocUnsafe(0);let e=Buffer.byteLength(t),i=512*Math.ceil(1+e/512),r=Buffer.allocUnsafe(i);for(let n=0;n<512;n++)r[n]=0;new F({path:("PaxHeader/"+_n(this.path??"")).slice(0,99),mode:this.mode||420,uid:this.uid,gid:this.gid,size:e,mtime:this.mtime,type:this.global?"GlobalExtendedHeader":"ExtendedHeader",linkpath:"",uname:this.uname||"",gname:this.gname||"",devmaj:0,devmin:0,atime:this.atime,ctime:this.ctime}).encode(r),r.write(t,512,e,"utf8");for(let n=e+512;n<r.length;n++)r[n]=0;return r}encodeBody(){return this.encodeField("path")+this.encodeField("ctime")+this.encodeField("atime")+this.encodeField("dev")+this.encodeField("ino")+this.encodeField("nlink")+this.encodeField("charset")+this.encodeField("comment")+this.encodeField("gid")+this.encodeField("gname")+this.encodeField("linkpath")+this.encodeField("mtime")+this.encodeField("size")+this.encodeField("uid")+this.encodeField("uname")}encodeField(t){if(this[t]===void 0)return"";let e=this[t],i=e instanceof Date?e.getTime()/1e3:e,r=" "+(t==="dev"||t==="ino"||t==="nlink"?"SCHILY.":"")+t+"="+i+`
|
|
125
|
+
${captureLines}`:capture2.stack}module.exports.fetch=function fetch2(init,options=void 0){return fetchImpl(init,options).catch(err=>{if(currentFilename){appendFetchStackTrace(err,currentFilename)}else if(err&&typeof err==="object"){Error.captureStackTrace(err,module.exports.fetch)}throw err})};module.exports.Headers=require_headers().Headers;module.exports.Response=require_response().Response;module.exports.Request=require_request2().Request;module.exports.FormData=require_formdata().FormData;var{setGlobalOrigin,getGlobalOrigin}=require_global();module.exports.setGlobalOrigin=setGlobalOrigin;module.exports.getGlobalOrigin=getGlobalOrigin;var{CacheStorage}=require_cachestorage();var{kConstruct}=require_symbols();module.exports.caches=new CacheStorage(kConstruct);var{deleteCookie,getCookies,getSetCookies,setCookie,parseCookie}=require_cookies();module.exports.deleteCookie=deleteCookie;module.exports.getCookies=getCookies;module.exports.getSetCookies=getSetCookies;module.exports.setCookie=setCookie;module.exports.parseCookie=parseCookie;var{parseMIMEType,serializeAMimeType}=require_data_url();module.exports.parseMIMEType=parseMIMEType;module.exports.serializeAMimeType=serializeAMimeType;var{CloseEvent,ErrorEvent,MessageEvent}=require_events();var{WebSocket,ping}=require_websocket();module.exports.WebSocket=WebSocket;module.exports.CloseEvent=CloseEvent;module.exports.ErrorEvent=ErrorEvent;module.exports.MessageEvent=MessageEvent;module.exports.ping=ping;module.exports.WebSocketStream=require_websocketstream().WebSocketStream;module.exports.WebSocketError=require_websocketerror().WebSocketError;module.exports.request=makeDispatcher(api.request);module.exports.stream=makeDispatcher(api.stream);module.exports.pipeline=makeDispatcher(api.pipeline);module.exports.connect=makeDispatcher(api.connect);module.exports.upgrade=makeDispatcher(api.upgrade);module.exports.MockClient=MockClient;module.exports.MockCallHistory=MockCallHistory;module.exports.MockCallHistoryLog=MockCallHistoryLog;module.exports.MockPool=MockPool;module.exports.MockAgent=MockAgent;module.exports.SnapshotAgent=SnapshotAgent;module.exports.mockErrors=mockErrors;var{EventSource}=require_eventsource();module.exports.EventSource=EventSource;function install(){globalThis.fetch=module.exports.fetch;globalThis.Headers=module.exports.Headers;globalThis.Response=module.exports.Response;globalThis.Request=module.exports.Request;globalThis.FormData=module.exports.FormData;globalThis.WebSocket=module.exports.WebSocket;globalThis.CloseEvent=module.exports.CloseEvent;globalThis.ErrorEvent=module.exports.ErrorEvent;globalThis.MessageEvent=module.exports.MessageEvent;globalThis.EventSource=module.exports.EventSource}module.exports.install=install}});function storagePragmas(walJournalSizeLimitBytes){return["PRAGMA journal_mode = WAL","PRAGMA synchronous = NORMAL","PRAGMA busy_timeout = 5000","PRAGMA foreign_keys = ON",`PRAGMA journal_size_limit = ${walJournalSizeLimitBytes}`,"PRAGMA auto_vacuum = INCREMENTAL"]}var WAL_JOURNAL_SIZE_LIMIT,STORAGE_PRAGMAS;var init_schema=__esm({"src/storage/schema.ts"(){"use strict";WAL_JOURNAL_SIZE_LIMIT=8*1024*1024;STORAGE_PRAGMAS=storagePragmas(WAL_JOURNAL_SIZE_LIMIT)}});import{createRequire}from"module";var require2;var init_driver=__esm({"src/storage/driver.ts"(){"use strict";require2=createRequire(import.meta.url)}});import{createHash as createHash6}from"crypto";import{mkdirSync as mkdirSync4,writeFileSync as writeFileSync2,appendFileSync as appendFileSync2,readFileSync as readFileSync5,existsSync as existsSync4}from"fs";import{dirname as dirname2,join}from"path";var EXT_VALUE_MAX_BYTES;var init_store=__esm({"src/storage/store.ts"(){"use strict";init_logger();init_driver();init_schema();EXT_VALUE_MAX_BYTES=4*1024*1024}});import{createHash as createHash13,randomUUID as randomUUID5}from"crypto";import fs14 from"fs";import net3 from"net";import os8 from"os";import path25 from"path";import{createRequire as createRequire3}from"module";import{pathToFileURL as pathToFileURL2}from"url";import{execFileSync as execFileSync5,spawn as spawn2,spawnSync as spawnSync3}from"child_process";import tls4 from"tls";var import_node_forge=__toESM(require_lib(),1);import crypto from"crypto";import{execFileSync as execFileSync2}from"child_process";import fs from"fs";import os from"os";import path4 from"path";import tls from"tls";import{homedir}from"os";import path from"path";function xdg(envVar,fallback){const v3=process.env[envVar];if(v3&&v3.length>0)return path.resolve(v3);return path.join(homedir(),fallback)}function configDir(){return path.join(xdg("XDG_CONFIG_HOME",".config"),"billion-context")}function configFile(){const env=process.env.BILI_CONFIG_FILE;if(env&&env.length>0)return path.resolve(env);return path.join(configDir(),"billion-context.json")}function cacheDir(){return path.join(xdg("XDG_CACHE_HOME",".cache"),"billion-context")}function stateDir(){return path.join(xdg("XDG_STATE_HOME",".local/state"),"billion-context")}function defaultLogFile(){return path.join(stateDir(),"bili.log")}init_logger();var COMBINED_MAX_AGE_MS=24*60*60*1e3;var PLATFORM_CA_CANDIDATES=process.platform==="darwin"?["/etc/ssl/cert.pem","/private/etc/ssl/cert.pem"]:process.platform==="win32"?[]:["/etc/ssl/certs/ca-certificates.crt","/etc/pki/tls/certs/ca-bundle.crt","/etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem","/etc/ssl/ca-bundle.pem","/etc/ssl/cert.pem"];var import_undici2=__toESM(require_undici(),1);init_logger();init_log_mask();import{execFileSync as execFileSync3}from"child_process";import net from"net";import tls3 from"tls";var import_undici=__toESM(require_undici(),1);import{AsyncLocalStorage as AsyncLocalStorage2}from"async_hooks";var transports=new AsyncLocalStorage2;init_logger();import{readFileSync as readFileSync3,statSync as statSync2}from"fs";import*as tls2 from"tls";import path5 from"path";function createScanner(text,ignoreTrivia=false){const len=text.length;let pos=0,value="",tokenOffset=0,token=16,lineNumber=0,lineStartOffset=0,tokenLineStartOffset=0,prevTokenLineStartOffset=0,scanError=0;function scanHexDigits(count,exact){let digits=0;let value2=0;while(digits<count||!exact){let ch=text.charCodeAt(pos);if(ch>=48&&ch<=57){value2=value2*16+ch-48}else if(ch>=65&&ch<=70){value2=value2*16+ch-65+10}else if(ch>=97&&ch<=102){value2=value2*16+ch-97+10}else{break}pos++;digits++}if(digits<count){value2=-1}return value2}function setPosition(newPosition){pos=newPosition;value="";tokenOffset=0;token=16;scanError=0}function scanNumber(){let start=pos;if(text.charCodeAt(pos)===48){pos++}else{pos++;while(pos<text.length&&isDigit(text.charCodeAt(pos))){pos++}}if(pos<text.length&&text.charCodeAt(pos)===46){pos++;if(pos<text.length&&isDigit(text.charCodeAt(pos))){pos++;while(pos<text.length&&isDigit(text.charCodeAt(pos))){pos++}}else{scanError=3;return text.substring(start,pos)}}let end=pos;if(pos<text.length&&(text.charCodeAt(pos)===69||text.charCodeAt(pos)===101)){pos++;if(pos<text.length&&text.charCodeAt(pos)===43||text.charCodeAt(pos)===45){pos++}if(pos<text.length&&isDigit(text.charCodeAt(pos))){pos++;while(pos<text.length&&isDigit(text.charCodeAt(pos))){pos++}end=pos}else{scanError=3}}return text.substring(start,end)}function scanString(){let result="",start=pos;while(true){if(pos>=len){result+=text.substring(start,pos);scanError=2;break}const ch=text.charCodeAt(pos);if(ch===34){result+=text.substring(start,pos);pos++;break}if(ch===92){result+=text.substring(start,pos);pos++;if(pos>=len){scanError=2;break}const ch2=text.charCodeAt(pos++);switch(ch2){case 34:result+='"';break;case 92:result+="\\";break;case 47:result+="/";break;case 98:result+="\b";break;case 102:result+="\f";break;case 110:result+="\n";break;case 114:result+="\r";break;case 116:result+=" ";break;case 117:const ch3=scanHexDigits(4,true);if(ch3>=0){result+=String.fromCharCode(ch3)}else{scanError=4}break;default:scanError=5}start=pos;continue}if(ch>=0&&ch<=31){if(isLineBreak(ch)){result+=text.substring(start,pos);scanError=2;break}else{scanError=6}}pos++}return result}function scanNext(){value="";scanError=0;tokenOffset=pos;lineStartOffset=lineNumber;prevTokenLineStartOffset=tokenLineStartOffset;if(pos>=len){tokenOffset=len;return token=17}let code=text.charCodeAt(pos);if(isWhiteSpace(code)){do{pos++;value+=String.fromCharCode(code);code=text.charCodeAt(pos)}while(isWhiteSpace(code));return token=15}if(isLineBreak(code)){pos++;value+=String.fromCharCode(code);if(code===13&&text.charCodeAt(pos)===10){pos++;value+="\n"}lineNumber++;tokenLineStartOffset=pos;return token=14}switch(code){case 123:pos++;return token=1;case 125:pos++;return token=2;case 91:pos++;return token=3;case 93:pos++;return token=4;case 58:pos++;return token=6;case 44:pos++;return token=5;case 34:pos++;value=scanString();return token=10;case 47:const start=pos-1;if(text.charCodeAt(pos+1)===47){pos+=2;while(pos<len){if(isLineBreak(text.charCodeAt(pos))){break}pos++}value=text.substring(start,pos);return token=12}if(text.charCodeAt(pos+1)===42){pos+=2;const safeLength=len-1;let commentClosed=false;while(pos<safeLength){const ch=text.charCodeAt(pos);if(ch===42&&text.charCodeAt(pos+1)===47){pos+=2;commentClosed=true;break}pos++;if(isLineBreak(ch)){if(ch===13&&text.charCodeAt(pos)===10){pos++}lineNumber++;tokenLineStartOffset=pos}}if(!commentClosed){pos++;scanError=1}value=text.substring(start,pos);return token=13}value+=String.fromCharCode(code);pos++;return token=16;case 45:value+=String.fromCharCode(code);pos++;if(pos===len||!isDigit(text.charCodeAt(pos))){return token=16}case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:value+=scanNumber();return token=11;default:while(pos<len&&isUnknownContentCharacter(code)){pos++;code=text.charCodeAt(pos)}if(tokenOffset!==pos){value=text.substring(tokenOffset,pos);switch(value){case"true":return token=8;case"false":return token=9;case"null":return token=7}return token=16}value+=String.fromCharCode(code);pos++;return token=16}}function isUnknownContentCharacter(code){if(isWhiteSpace(code)||isLineBreak(code)){return false}switch(code){case 125:case 93:case 123:case 91:case 34:case 58:case 44:case 47:return false}return true}function scanNextNonTrivia(){let result;do{result=scanNext()}while(result>=12&&result<=15);return result}return{setPosition,getPosition:()=>pos,scan:ignoreTrivia?scanNextNonTrivia:scanNext,getToken:()=>token,getTokenValue:()=>value,getTokenOffset:()=>tokenOffset,getTokenLength:()=>pos-tokenOffset,getTokenStartLine:()=>lineStartOffset,getTokenStartCharacter:()=>tokenOffset-prevTokenLineStartOffset,getTokenError:()=>scanError}}function isWhiteSpace(ch){return ch===32||ch===9}function isLineBreak(ch){return ch===10||ch===13}function isDigit(ch){return ch>=48&&ch<=57}var CharacterCodes;(function(CharacterCodes2){CharacterCodes2[CharacterCodes2["lineFeed"]=10]="lineFeed";CharacterCodes2[CharacterCodes2["carriageReturn"]=13]="carriageReturn";CharacterCodes2[CharacterCodes2["space"]=32]="space";CharacterCodes2[CharacterCodes2["_0"]=48]="_0";CharacterCodes2[CharacterCodes2["_1"]=49]="_1";CharacterCodes2[CharacterCodes2["_2"]=50]="_2";CharacterCodes2[CharacterCodes2["_3"]=51]="_3";CharacterCodes2[CharacterCodes2["_4"]=52]="_4";CharacterCodes2[CharacterCodes2["_5"]=53]="_5";CharacterCodes2[CharacterCodes2["_6"]=54]="_6";CharacterCodes2[CharacterCodes2["_7"]=55]="_7";CharacterCodes2[CharacterCodes2["_8"]=56]="_8";CharacterCodes2[CharacterCodes2["_9"]=57]="_9";CharacterCodes2[CharacterCodes2["a"]=97]="a";CharacterCodes2[CharacterCodes2["b"]=98]="b";CharacterCodes2[CharacterCodes2["c"]=99]="c";CharacterCodes2[CharacterCodes2["d"]=100]="d";CharacterCodes2[CharacterCodes2["e"]=101]="e";CharacterCodes2[CharacterCodes2["f"]=102]="f";CharacterCodes2[CharacterCodes2["g"]=103]="g";CharacterCodes2[CharacterCodes2["h"]=104]="h";CharacterCodes2[CharacterCodes2["i"]=105]="i";CharacterCodes2[CharacterCodes2["j"]=106]="j";CharacterCodes2[CharacterCodes2["k"]=107]="k";CharacterCodes2[CharacterCodes2["l"]=108]="l";CharacterCodes2[CharacterCodes2["m"]=109]="m";CharacterCodes2[CharacterCodes2["n"]=110]="n";CharacterCodes2[CharacterCodes2["o"]=111]="o";CharacterCodes2[CharacterCodes2["p"]=112]="p";CharacterCodes2[CharacterCodes2["q"]=113]="q";CharacterCodes2[CharacterCodes2["r"]=114]="r";CharacterCodes2[CharacterCodes2["s"]=115]="s";CharacterCodes2[CharacterCodes2["t"]=116]="t";CharacterCodes2[CharacterCodes2["u"]=117]="u";CharacterCodes2[CharacterCodes2["v"]=118]="v";CharacterCodes2[CharacterCodes2["w"]=119]="w";CharacterCodes2[CharacterCodes2["x"]=120]="x";CharacterCodes2[CharacterCodes2["y"]=121]="y";CharacterCodes2[CharacterCodes2["z"]=122]="z";CharacterCodes2[CharacterCodes2["A"]=65]="A";CharacterCodes2[CharacterCodes2["B"]=66]="B";CharacterCodes2[CharacterCodes2["C"]=67]="C";CharacterCodes2[CharacterCodes2["D"]=68]="D";CharacterCodes2[CharacterCodes2["E"]=69]="E";CharacterCodes2[CharacterCodes2["F"]=70]="F";CharacterCodes2[CharacterCodes2["G"]=71]="G";CharacterCodes2[CharacterCodes2["H"]=72]="H";CharacterCodes2[CharacterCodes2["I"]=73]="I";CharacterCodes2[CharacterCodes2["J"]=74]="J";CharacterCodes2[CharacterCodes2["K"]=75]="K";CharacterCodes2[CharacterCodes2["L"]=76]="L";CharacterCodes2[CharacterCodes2["M"]=77]="M";CharacterCodes2[CharacterCodes2["N"]=78]="N";CharacterCodes2[CharacterCodes2["O"]=79]="O";CharacterCodes2[CharacterCodes2["P"]=80]="P";CharacterCodes2[CharacterCodes2["Q"]=81]="Q";CharacterCodes2[CharacterCodes2["R"]=82]="R";CharacterCodes2[CharacterCodes2["S"]=83]="S";CharacterCodes2[CharacterCodes2["T"]=84]="T";CharacterCodes2[CharacterCodes2["U"]=85]="U";CharacterCodes2[CharacterCodes2["V"]=86]="V";CharacterCodes2[CharacterCodes2["W"]=87]="W";CharacterCodes2[CharacterCodes2["X"]=88]="X";CharacterCodes2[CharacterCodes2["Y"]=89]="Y";CharacterCodes2[CharacterCodes2["Z"]=90]="Z";CharacterCodes2[CharacterCodes2["asterisk"]=42]="asterisk";CharacterCodes2[CharacterCodes2["backslash"]=92]="backslash";CharacterCodes2[CharacterCodes2["closeBrace"]=125]="closeBrace";CharacterCodes2[CharacterCodes2["closeBracket"]=93]="closeBracket";CharacterCodes2[CharacterCodes2["colon"]=58]="colon";CharacterCodes2[CharacterCodes2["comma"]=44]="comma";CharacterCodes2[CharacterCodes2["dot"]=46]="dot";CharacterCodes2[CharacterCodes2["doubleQuote"]=34]="doubleQuote";CharacterCodes2[CharacterCodes2["minus"]=45]="minus";CharacterCodes2[CharacterCodes2["openBrace"]=123]="openBrace";CharacterCodes2[CharacterCodes2["openBracket"]=91]="openBracket";CharacterCodes2[CharacterCodes2["plus"]=43]="plus";CharacterCodes2[CharacterCodes2["slash"]=47]="slash";CharacterCodes2[CharacterCodes2["formFeed"]=12]="formFeed";CharacterCodes2[CharacterCodes2["tab"]=9]="tab"})(CharacterCodes||(CharacterCodes={}));var cachedSpaces=new Array(20).fill(0).map((_3,index)=>{return" ".repeat(index)});var maxCachedValues=200;var cachedBreakLinesWithSpaces={" ":{"\n":new Array(maxCachedValues).fill(0).map((_3,index)=>{return"\n"+" ".repeat(index)}),"\r":new Array(maxCachedValues).fill(0).map((_3,index)=>{return"\r"+" ".repeat(index)}),"\r\n":new Array(maxCachedValues).fill(0).map((_3,index)=>{return"\r\n"+" ".repeat(index)})}," ":{"\n":new Array(maxCachedValues).fill(0).map((_3,index)=>{return"\n"+" ".repeat(index)}),"\r":new Array(maxCachedValues).fill(0).map((_3,index)=>{return"\r"+" ".repeat(index)}),"\r\n":new Array(maxCachedValues).fill(0).map((_3,index)=>{return"\r\n"+" ".repeat(index)})}};var ParseOptions;(function(ParseOptions2){ParseOptions2.DEFAULT={allowTrailingComma:false}})(ParseOptions||(ParseOptions={}));function parse(text,errors=[],options=ParseOptions.DEFAULT){let currentProperty=null;let currentParent=[];const previousParents=[];function onValue(value){if(Array.isArray(currentParent)){currentParent.push(value)}else if(currentProperty!==null){currentParent[currentProperty]=value}}const visitor={onObjectBegin:()=>{const object={};onValue(object);previousParents.push(currentParent);currentParent=object;currentProperty=null},onObjectProperty:name=>{currentProperty=name},onObjectEnd:()=>{currentParent=previousParents.pop()},onArrayBegin:()=>{const array=[];onValue(array);previousParents.push(currentParent);currentParent=array;currentProperty=null},onArrayEnd:()=>{currentParent=previousParents.pop()},onLiteralValue:onValue,onError:(error,offset,length)=>{errors.push({error,offset,length})}};visit(text,visitor,options);return currentParent[0]}function visit(text,visitor,options=ParseOptions.DEFAULT){const _scanner=createScanner(text,false);const _jsonPath=[];let suppressedCallbacks=0;function toNoArgVisit(visitFunction){return visitFunction?()=>suppressedCallbacks===0&&visitFunction(_scanner.getTokenOffset(),_scanner.getTokenLength(),_scanner.getTokenStartLine(),_scanner.getTokenStartCharacter()):()=>true}function toOneArgVisit(visitFunction){return visitFunction?arg=>suppressedCallbacks===0&&visitFunction(arg,_scanner.getTokenOffset(),_scanner.getTokenLength(),_scanner.getTokenStartLine(),_scanner.getTokenStartCharacter()):()=>true}function toOneArgVisitWithPath(visitFunction){return visitFunction?arg=>suppressedCallbacks===0&&visitFunction(arg,_scanner.getTokenOffset(),_scanner.getTokenLength(),_scanner.getTokenStartLine(),_scanner.getTokenStartCharacter(),()=>_jsonPath.slice()):()=>true}function toBeginVisit(visitFunction){return visitFunction?()=>{if(suppressedCallbacks>0){suppressedCallbacks++}else{let cbReturn=visitFunction(_scanner.getTokenOffset(),_scanner.getTokenLength(),_scanner.getTokenStartLine(),_scanner.getTokenStartCharacter(),()=>_jsonPath.slice());if(cbReturn===false){suppressedCallbacks=1}}}:()=>true}function toEndVisit(visitFunction){return visitFunction?()=>{if(suppressedCallbacks>0){suppressedCallbacks--}if(suppressedCallbacks===0){visitFunction(_scanner.getTokenOffset(),_scanner.getTokenLength(),_scanner.getTokenStartLine(),_scanner.getTokenStartCharacter())}}:()=>true}const onObjectBegin=toBeginVisit(visitor.onObjectBegin),onObjectProperty=toOneArgVisitWithPath(visitor.onObjectProperty),onObjectEnd=toEndVisit(visitor.onObjectEnd),onArrayBegin=toBeginVisit(visitor.onArrayBegin),onArrayEnd=toEndVisit(visitor.onArrayEnd),onLiteralValue=toOneArgVisitWithPath(visitor.onLiteralValue),onSeparator=toOneArgVisit(visitor.onSeparator),onComment=toNoArgVisit(visitor.onComment),onError=toOneArgVisit(visitor.onError);const disallowComments=options&&options.disallowComments;const allowTrailingComma=options&&options.allowTrailingComma;function scanNext(){while(true){const token=_scanner.scan();switch(_scanner.getTokenError()){case 4:handleError(14);break;case 5:handleError(15);break;case 3:handleError(13);break;case 1:if(!disallowComments){handleError(11)}break;case 2:handleError(12);break;case 6:handleError(16);break}switch(token){case 12:case 13:if(disallowComments){handleError(10)}else{onComment()}break;case 16:handleError(1);break;case 15:case 14:break;default:return token}}}function handleError(error,skipUntilAfter=[],skipUntil=[]){onError(error);if(skipUntilAfter.length+skipUntil.length>0){let token=_scanner.getToken();while(token!==17){if(skipUntilAfter.indexOf(token)!==-1){scanNext();break}else if(skipUntil.indexOf(token)!==-1){break}token=scanNext()}}}function parseString(isValue){const value=_scanner.getTokenValue();if(isValue){onLiteralValue(value)}else{onObjectProperty(value);_jsonPath.push(value)}scanNext();return true}function parseLiteral(){switch(_scanner.getToken()){case 11:const tokenValue=_scanner.getTokenValue();let value=Number(tokenValue);if(isNaN(value)){handleError(2);value=0}onLiteralValue(value);break;case 7:onLiteralValue(null);break;case 8:onLiteralValue(true);break;case 9:onLiteralValue(false);break;default:return false}scanNext();return true}function parseProperty(){if(_scanner.getToken()!==10){handleError(3,[],[2,5]);return false}parseString(false);if(_scanner.getToken()===6){onSeparator(":");scanNext();if(!parseValue()){handleError(4,[],[2,5])}}else{handleError(5,[],[2,5])}_jsonPath.pop();return true}function parseObject(){onObjectBegin();scanNext();let needsComma=false;while(_scanner.getToken()!==2&&_scanner.getToken()!==17){if(_scanner.getToken()===5){if(!needsComma){handleError(4,[],[])}onSeparator(",");scanNext();if(_scanner.getToken()===2&&allowTrailingComma){break}}else if(needsComma){handleError(6,[],[])}if(!parseProperty()){handleError(4,[],[2,5])}needsComma=true}onObjectEnd();if(_scanner.getToken()!==2){handleError(7,[2],[])}else{scanNext()}return true}function parseArray(){onArrayBegin();scanNext();let isFirstElement=true;let needsComma=false;while(_scanner.getToken()!==4&&_scanner.getToken()!==17){if(_scanner.getToken()===5){if(!needsComma){handleError(4,[],[])}onSeparator(",");scanNext();if(_scanner.getToken()===4&&allowTrailingComma){break}}else if(needsComma){handleError(6,[],[])}if(isFirstElement){_jsonPath.push(0);isFirstElement=false}else{_jsonPath[_jsonPath.length-1]++}if(!parseValue()){handleError(4,[],[4,5])}needsComma=true}onArrayEnd();if(!isFirstElement){_jsonPath.pop()}if(_scanner.getToken()!==4){handleError(8,[4],[])}else{scanNext()}return true}function parseValue(){switch(_scanner.getToken()){case 3:return parseArray();case 1:return parseObject();case 10:return parseString(true);default:return parseLiteral()}}scanNext();if(_scanner.getToken()===17){if(options.allowEmptyContent){return true}handleError(4,[],[]);return false}if(!parseValue()){handleError(4,[],[]);return false}if(_scanner.getToken()!==17){handleError(9,[],[])}return true}var ScanError;(function(ScanError2){ScanError2[ScanError2["None"]=0]="None";ScanError2[ScanError2["UnexpectedEndOfComment"]=1]="UnexpectedEndOfComment";ScanError2[ScanError2["UnexpectedEndOfString"]=2]="UnexpectedEndOfString";ScanError2[ScanError2["UnexpectedEndOfNumber"]=3]="UnexpectedEndOfNumber";ScanError2[ScanError2["InvalidUnicode"]=4]="InvalidUnicode";ScanError2[ScanError2["InvalidEscapeCharacter"]=5]="InvalidEscapeCharacter";ScanError2[ScanError2["InvalidCharacter"]=6]="InvalidCharacter"})(ScanError||(ScanError={}));var SyntaxKind;(function(SyntaxKind2){SyntaxKind2[SyntaxKind2["OpenBraceToken"]=1]="OpenBraceToken";SyntaxKind2[SyntaxKind2["CloseBraceToken"]=2]="CloseBraceToken";SyntaxKind2[SyntaxKind2["OpenBracketToken"]=3]="OpenBracketToken";SyntaxKind2[SyntaxKind2["CloseBracketToken"]=4]="CloseBracketToken";SyntaxKind2[SyntaxKind2["CommaToken"]=5]="CommaToken";SyntaxKind2[SyntaxKind2["ColonToken"]=6]="ColonToken";SyntaxKind2[SyntaxKind2["NullKeyword"]=7]="NullKeyword";SyntaxKind2[SyntaxKind2["TrueKeyword"]=8]="TrueKeyword";SyntaxKind2[SyntaxKind2["FalseKeyword"]=9]="FalseKeyword";SyntaxKind2[SyntaxKind2["StringLiteral"]=10]="StringLiteral";SyntaxKind2[SyntaxKind2["NumericLiteral"]=11]="NumericLiteral";SyntaxKind2[SyntaxKind2["LineCommentTrivia"]=12]="LineCommentTrivia";SyntaxKind2[SyntaxKind2["BlockCommentTrivia"]=13]="BlockCommentTrivia";SyntaxKind2[SyntaxKind2["LineBreakTrivia"]=14]="LineBreakTrivia";SyntaxKind2[SyntaxKind2["Trivia"]=15]="Trivia";SyntaxKind2[SyntaxKind2["Unknown"]=16]="Unknown";SyntaxKind2[SyntaxKind2["EOF"]=17]="EOF"})(SyntaxKind||(SyntaxKind={}));var parse2=parse;var ParseErrorCode;(function(ParseErrorCode2){ParseErrorCode2[ParseErrorCode2["InvalidSymbol"]=1]="InvalidSymbol";ParseErrorCode2[ParseErrorCode2["InvalidNumberFormat"]=2]="InvalidNumberFormat";ParseErrorCode2[ParseErrorCode2["PropertyNameExpected"]=3]="PropertyNameExpected";ParseErrorCode2[ParseErrorCode2["ValueExpected"]=4]="ValueExpected";ParseErrorCode2[ParseErrorCode2["ColonExpected"]=5]="ColonExpected";ParseErrorCode2[ParseErrorCode2["CommaExpected"]=6]="CommaExpected";ParseErrorCode2[ParseErrorCode2["CloseBraceExpected"]=7]="CloseBraceExpected";ParseErrorCode2[ParseErrorCode2["CloseBracketExpected"]=8]="CloseBracketExpected";ParseErrorCode2[ParseErrorCode2["EndOfFileExpected"]=9]="EndOfFileExpected";ParseErrorCode2[ParseErrorCode2["InvalidCommentToken"]=10]="InvalidCommentToken";ParseErrorCode2[ParseErrorCode2["UnexpectedEndOfComment"]=11]="UnexpectedEndOfComment";ParseErrorCode2[ParseErrorCode2["UnexpectedEndOfString"]=12]="UnexpectedEndOfString";ParseErrorCode2[ParseErrorCode2["UnexpectedEndOfNumber"]=13]="UnexpectedEndOfNumber";ParseErrorCode2[ParseErrorCode2["InvalidUnicode"]=14]="InvalidUnicode";ParseErrorCode2[ParseErrorCode2["InvalidEscapeCharacter"]=15]="InvalidEscapeCharacter";ParseErrorCode2[ParseErrorCode2["InvalidCharacter"]=16]="InvalidCharacter"})(ParseErrorCode||(ParseErrorCode={}));function printParseErrorCode(code){switch(code){case 1:return"InvalidSymbol";case 2:return"InvalidNumberFormat";case 3:return"PropertyNameExpected";case 4:return"ValueExpected";case 5:return"ColonExpected";case 6:return"CommaExpected";case 7:return"CloseBraceExpected";case 8:return"CloseBracketExpected";case 9:return"EndOfFileExpected";case 10:return"InvalidCommentToken";case 11:return"UnexpectedEndOfComment";case 12:return"UnexpectedEndOfString";case 13:return"UnexpectedEndOfNumber";case 14:return"InvalidUnicode";case 15:return"InvalidEscapeCharacter";case 16:return"InvalidCharacter"}return"<unknown ParseErrorCode>"}import{readFileSync as readFileSync2,existsSync,mkdirSync as mkdirSync2,writeFileSync}from"fs";import{createHash as createHash3}from"crypto";import{dirname}from"path";init_logger();init_log_mask();import{createHash as createHash2}from"crypto";var BILI_PASSTHROUGH_HEADER="x-bili-passthrough";function hashId(s3){return createHash2("sha256").update(s3,"utf8").digest("hex").slice(0,16)}var DEFAULT_MITM_DOMAINS=["api.anthropic.com","api.openai.com","chatgpt.com"];init_logger();var LOOPBACK_HOSTNAMES=["localhost","127.0.0.1","[::1]"];function isPrivateIPv4(host){const a=Number.parseInt(host.split(".")[0]??"",10);const b3=Number.parseInt(host.split(".")[1]??"",10);if(a===127||a===10||a===0)return true;if(a===172&&b3>=16&&b3<=31)return true;if(a===192&&b3===168)return true;if(a===169&&b3===254)return true;return false}function isPrivateHostname(hostname){let host=hostname.toLowerCase();if(host==="localhost"||host.endsWith(".local")||host.endsWith(".lan")||host.endsWith(".internal"))return true;if(host.startsWith("["))host=host.slice(1,-1);if(host.includes(":")){if(host==="::1"||host==="::")return true;const first=host.split(":")[0]??"";if(/^f[cd]/.test(first))return true;if(/^fe[89ab]/.test(first))return true;const dotted=/::ffff:(\d+\.\d+\.\d+\.\d+)$/.exec(host);if(dotted&&isPrivateIPv4(dotted[1]))return true;const hex=/::ffff:([0-9a-f]{1,4}):([0-9a-f]{1,4})$/.exec(host);if(hex){const w1=Number.parseInt(hex[1],16);const w22=Number.parseInt(hex[2],16);if(isPrivateIPv4(`${w1>>8}.${w1&255}.${w22>>8}.${w22&255}`))return true}return false}if(/^\d+\.\d+\.\d+\.\d+$/.test(host))return isPrivateIPv4(host);return false}function plainHttpTrusted(url,allowPrivate){if(LOOPBACK_HOSTNAMES.includes(url.hostname))return true;return allowPrivate&&isPrivateHostname(url.hostname)}var SUMMARY_DEFAULT_BUDGET={totalTimeoutMs:5e4,targetTimeoutMs:25e3,maxSummaryBytes:64*1024};function resolveRecordedMitmDomains(passed,env=process.env){const fileConfig=loadConfigFile();const enabled=(env.BILI_MITM??(fileConfig.mitm?.enabled===false?"0":"1"))!=="0";if(!enabled)return[];const effective=passed&&passed.length>0?passed.join(","):env.BILI_MITM_DOMAINS;return dedupeDomains([...fileConfig.mitm?.domains??[],...splitCsv(effective)])}function splitCsv(value){if(!value)return[];return value.split(",").map(s3=>s3.trim()).filter(s3=>s3.length>0)}function dedupeDomains(list){const seen=new Set;const out=[];for(const d2 of list){if(!seen.has(d2)){seen.add(d2);out.push(d2)}}return out}var KNOWN_TOP_LEVEL_KEYS=new Set(["port","host","upstream","providersPath","providers","proxy","modelContextLimit","sessionHeader","log","debug","dumpSse","passthrough","autoUpdate","autoRestartOnUpdate","updateTag","advisoryCheck","advisoryUrl","releaseNotesCheck","releaseNotesUrl","upstreamProxy","upstreamProxyMode","logFile","compress","promptCache","mitm","maskHosts","subagentSplit","forkAdoption","affinitySimhash","resumeInheritance","chainContentDetection","chainEgressStamp","stableSystemAnchor","rollout","dsh","compat","imageBilling","imageTokenCap","claude","native","resign","pi","storage","security","network","persist","sessions","plugin","update","diagnostics","fakeCompletion","codexCompact","ccrRetrievalTtlMs","decompressTmpCap","autoModeForge","imageRescale","guardrails","cacheKeepalive"]);var COMPRESS_SETTING_FIELDS=new Set(["modelContextLimit","maxContextLimit","emergencyThresholdPercent","nudgeGrowthTokens","minPressureBenefitTokens","tierNudgeTokens","nudgeModelDecided","nudgeDecisionMaxTokens","preserveRecentMessages","preserveRecentTokens","minCompressRange","minCompressRangeChars","outputHeadroomMaxPct","tiers","protectedLatestTools","protectedTools","neverPreserveRecentTools","preserveRecentTools","visibilityMarkers","rules","injectTool","injectNudge","acknowledgePromptsRisk","absorb","ccr","search","prompts","promptPack","reasoningGuard","outputSteering","priceProfile","reconcile","streamSummary"]);var seenUnknownTopLevelKeySignatures=new Set;function warnUnknownTopLevelKeys(obj){const unknown=Object.keys(obj).filter(key=>!KNOWN_TOP_LEVEL_KEYS.has(key)&&key!=="allowDshCompaction");if(unknown.length===0)return;const signature=[...unknown].sort().join("\0");if(seenUnknownTopLevelKeySignatures.has(signature))return;seenUnknownTopLevelKeySignatures.add(signature);const misplaced=unknown.filter(key=>COMPRESS_SETTING_FIELDS.has(key));const hint=misplaced.length>0?` \u2014 ${misplaced.map(k2=>`"${k2}" belongs under "compress" (did you mean "compress.${k2}"?)`).join("; ")}`:"";log("warn",`[acp-config] ignoring unknown top-level config key(s): ${unknown.join(", ")}${hint}`)}var configFileCache=null;function parseBiliConfig(raw){try{return JSON.parse(raw)}catch{const errors=[];const value=parse2(raw,errors,{allowTrailingComma:true});if(errors.length===0)return value;const first=errors[0];throw new SyntaxError(`invalid JSON/JSONC at ${lineColumnOf(raw,first.offset)}: ${printParseErrorCode(first.error)}`)}}function lineColumnOf(text,offset){let line=1;let column=1;for(let i=0;i<offset&&i<text.length;i++){if(text.charAt(i)==="\n"){line++;column=1}else column++}return`line ${line} column ${column}`}function loadConfigFile(){const path31=configFile();let raw;let value;try{raw=readFileSync2(path31,"utf8").replace(/^\uFEFF/,"");const cached=configFileCache;if(cached&&cached.raw===raw)return cached.value;const parsed=parseBiliConfig(raw);if(parsed&&typeof parsed==="object"&&!Array.isArray(parsed)){const obj=parsed;warnRemovedDshAllowKey(obj);warnUnknownTopLevelKeys(obj);warnInertResignPassthrough(obj);warnInertStripImages(obj);warnInertRemovedCompressKeys(obj);value=obj}else{value={}}}catch(e){if(e.code!=="ENOENT"){log("error",`[acp-config] failed to parse ${path31}: ${String(e)}`)}if(raw!==void 0)value={}}if(raw===void 0||value===void 0)return{};configFileCache={raw,value};return value}var removedDshAllowKeySignature="";function warnRemovedDshAllowKey(obj){const hits=[];if(Object.prototype.hasOwnProperty.call(obj,"allowDshCompaction")&&obj.allowDshCompaction!==null&&obj.allowDshCompaction!==void 0){hits.push('top-level "allowDshCompaction"')}const d2=obj.dsh;if(d2!==null&&typeof d2==="object"&&!Array.isArray(d2)){for(const key of Object.keys(d2))if(key!=="authoredCompaction")hits.push(`dsh.${key}`)}hits.sort();const sig=hits.join(",");if(sig===""||sig===removedDshAllowKeySignature)return;removedDshAllowKeySignature=sig;log("warn",`[acp-config] ${hits.join(", ")} was removed (#3651, superseding #2028) \u2014 value(s) ignored: dsh native compaction is now refused unconditionally by the wire guard on every lane. Delete it from your config to silence this.`)}var RESIGN_BUILTIN_SCHEME="sdk-hmac-sha256";function resolveResignSettings(env=process.env,provider={},scheme=RESIGN_BUILTIN_SCHEME){const key=scheme.trim().toLowerCase();const file=loadConfigFile().resign?.[key]??{};const providerBlock=provider?.[key]??{};const enabled=env.BILI_RESIGN!==void 0?env.BILI_RESIGN!=="0":providerBlock.enabled!==void 0?providerBlock.enabled:file.enabled!==false;const passthrough=env.BILI_RESIGN_PASSTHROUGH!==void 0?env.BILI_RESIGN_PASSTHROUGH==="1"||env.BILI_RESIGN_PASSTHROUGH==="true":providerBlock.passthrough!==void 0?providerBlock.passthrough:file.passthrough===true;const credentialRef=env.BILI_CODEARTS_REF?.trim()||providerBlock.credentialRef||file.credentialRef||void 0;return{enabled,passthrough,credentialRef}}var inertResignPassthroughSignature=null;function warnInertStripImages(obj){const compress=obj.compress;if(!compress||typeof compress!=="object"||Array.isArray(compress))return;const hit=["stripImages","stripImagesKeepRecent"].filter(k2=>compress[k2]!==void 0);const sig=hit.join(",");if(sig===""||sig===seenInertStripImagesSignature)return;seenInertStripImagesSignature=sig;log("warn",`[acp-config] compress.${hit.join("/compress.")} is INERT \u2014 compress.stripImages was removed: media now folds by default (#2640) and decompress({ imageRef }) recovers folded pixels; nothing is stripped from the wire anymore. Remove the key(s) from the config.`)}var seenInertStripImagesSignature="";var INERT_REMOVED_COMPRESS_KEYS=["imageCompression"];var seenInertRemovedCompressKeysSignature="";function warnInertRemovedCompressKeys(obj){const hits=[];const scanBlock=(block,pathPrefix)=>{if(!block||typeof block!=="object"||Array.isArray(block))return;for(const key of INERT_REMOVED_COMPRESS_KEYS){if(block[key]!==void 0)hits.push(`${pathPrefix}.${key}`)}};scanBlock(obj.compress,"compress");const providers=obj.providers;if(providers&&typeof providers==="object"&&!Array.isArray(providers)){for(const[url,entry]of Object.entries(providers)){if(!entry||typeof entry!=="object"||Array.isArray(entry))continue;const p2=entry;scanBlock(p2.compress,`providers["${url}"].compress`);const models=p2.models;if(models&&typeof models==="object"&&!Array.isArray(models)){for(const[model,mEntry]of Object.entries(models)){if(!mEntry||typeof mEntry!=="object"||Array.isArray(mEntry))continue;scanBlock(mEntry.compress,`providers["${url}"].models["${model}"].compress`)}}}}hits.sort();const sig=hits.join(",");if(sig===""||sig===seenInertRemovedCompressKeysSignature)return;seenInertRemovedCompressKeysSignature=sig;log("warn",`[acp-config] ${hits.join(", ")} is INERT \u2014 compress.imageCompression was removed and no longer does anything at any level (image pre-compression + image_full restore channel, #3266). Remove it from the config; images pass through byte-identical.`)}function warnInertResignPassthrough(obj){const inert=[];const consider=(map,providerBlockFor)=>{if(!map||typeof map!=="object"||Array.isArray(map))return;for(const[key,val]of Object.entries(map)){if(key===RESIGN_BUILTIN_SCHEME)continue;const block=val!==null&&typeof val==="object"&&!Array.isArray(val)?val:{};if(block["passthrough"]!==true)continue;const fileBlock=(obj.resign??{})[key];const providerBlock=providerBlockFor(key);const enabled=process.env.BILI_RESIGN!==void 0?process.env.BILI_RESIGN!=="0":providerBlock?.enabled!==void 0?providerBlock.enabled:fileBlock?.enabled!==false;if(enabled)inert.push(key)}};consider(obj.resign,()=>void 0);const providers=obj.providers;if(providers&&typeof providers==="object"&&!Array.isArray(providers)){for(const entry of Object.values(providers)){if(!entry||typeof entry!=="object"||Array.isArray(entry))continue;const pmap=entry.resign;if(pmap===void 0)continue;consider(pmap,key=>(pmap??{})[key])}}inert.sort();const sig=inert.join(",");if(sig===""||sig===inertResignPassthroughSignature)return;inertResignPassthroughSignature=sig;const list=inert.map(k2=>`resign["${k2}"].passthrough`).join(", ");log("warn",`[acp-config] ${list}=true is INERT \u2014 since the #2090 compress-or-refuse contract, unsigned pass-through exists ONLY for the built-in scheme "${RESIGN_BUILTIN_SCHEME}"; those signed requests stay REFUSED until bili ships a re-signer for them. Restore pre-resign handling with resign["<scheme>"].enabled=false or BILI_RESIGN=0 (the upstream will then reject the rewritten bodies).`)}var ZONE_PORT_BASE=18787;function resolveZonePortBase(env=process.env){const fromEnv=Number.parseInt(env.BILI_ZONE_PORT??"",10);if(Number.isInteger(fromEnv)&&fromEnv>0&&fromEnv<65536)return fromEnv;return ZONE_PORT_BASE}function resolveNativeAttachExternal(env=process.env){const fromEnv=(env.BILI_NATIVE_ATTACH_EXTERNAL??"").trim().toLowerCase();if(fromEnv==="1"||fromEnv==="true")return true;if(fromEnv==="0"||fromEnv==="false")return false;return loadConfigFile().native?.attachExternal===true}function resolveNativeAttachLanePriority(){const raw=loadConfigFile().native?.attachLanePriority;if(!Array.isArray(raw))return[];const out=[];for(const item of raw){if(typeof item!=="string")continue;const t=item.trim();if(t.length>0&&!out.includes(t))out.push(t)}return out}function resolveNativeAttachPolicy(env=process.env){const norm=v3=>(v3??"").trim().toLowerCase();const fromEnv=norm(env.BILI_NATIVE_ATTACH_POLICY);if(fromEnv==="global-fallback"||fromEnv==="global")return"global-fallback";if(fromEnv==="own-lane"||fromEnv==="ownlane"||fromEnv==="strict")return"own-lane";const file=norm(loadConfigFile().native?.attachPolicy);if(file==="global-fallback"||file==="global")return"global-fallback";return"own-lane"}function resolveNativeAttachUrl(env=process.env){const fromEnv=(env.BILI_MCP_PROXY??"").trim();if(fromEnv.length>0)return fromEnv;const file=(loadConfigFile().native?.attachUrl??"").trim();return file.length>0?file:void 0}init_schema();function tNumLoose(envName,fileValue){const envRaw=process.env[envName];if(envRaw!==void 0&&envRaw!=="")return Number(envRaw);return typeof fileValue==="number"&&Number.isFinite(fileValue)?fileValue:NaN}function tInt(envName,fileValue){const envRaw=process.env[envName];if(envRaw!==void 0)return Number.parseInt(envRaw,10);return typeof fileValue==="number"&&Number.isFinite(fileValue)?fileValue:NaN}function fileNetwork(){return loadConfigFile().network??{}}function allowPrivateHttpProviders(){const envRaw=process.env.BILI_ALLOW_PRIVATE_HTTP_PROVIDERS;if(envRaw!==void 0)return envRaw==="1"||envRaw==="true";return fileNetwork().allowPrivateHttpProviders===true}var DEFAULT_LIMITS_RECEIVE_BYTES=5*1024*1024*1024;var DEFAULT_LIMITS_DECODED_BYTES=10*1024*1024*1024;var DEFAULT_LIMITS_OUTBOUND_BYTES=5*1024*1024*1024;var DEFAULT_WS_OUTBOUND_BYTES=10*1024*1024;function guardrailBashTimeout(){const n=tNumLoose("BILI_GUARDRAIL_BASH_TIMEOUT",loadConfigFile().guardrails?.bashTimeout);if(!Number.isFinite(n))return 60;return n>0?Math.floor(n):void 0}function guardrailMaxOutputBytes(){const n=tNumLoose("BILI_GUARDRAIL_MAX_OUTPUT_BYTES",loadConfigFile().guardrails?.maxOutputBytes);if(!Number.isFinite(n))return 5e4;return n>0?Math.floor(n):void 0}function guardrailRepetition(){const envRaw=process.env.BILI_GUARDRAIL_REPETITION;if(envRaw!==void 0)return!(envRaw==="0"||envRaw==="false");return loadConfigFile().guardrails?.repetition!==false}function maxSessions(){const envRaw=process.env.BILI_MAX_SESSIONS;const v3=envRaw!==void 0?Number.parseInt(envRaw,10):(()=>{const f2=loadConfigFile().sessions?.max;return typeof f2==="number"&&Number.isFinite(f2)?f2:NaN})();return Math.max(1,v3||256)}function sessionResidentMaxBytes(){const v3=tInt("BILI_SESSION_RESIDENT_MAX_BYTES",loadConfigFile().sessions?.residentMaxBytes);return Number.isFinite(v3)&&v3>=0?Math.floor(v3):512*1024*1024}function updateRegistryBase(){const envRaw=process.env.BILI_UPDATE_REGISTRY;if(envRaw!==void 0&&envRaw.trim().length>0)return envRaw.trim();const f2=loadConfigFile().update?.registry;return typeof f2==="string"&&f2.trim().length>0?f2.trim():void 0}function updateCheckIntervalMs(){const v3=tNumLoose("BILI_UPDATE_CHECK_INTERVAL_MS",loadConfigFile().update?.checkIntervalMs);return Number.isFinite(v3)&&v3>0?Math.floor(v3):3*60*1e3}var MAX_REQUEST_BYTES=100*1024*1024;var MAX_DECODED_REQUEST_BYTES=2*MAX_REQUEST_BYTES;var UPSTREAM_TIMEOUT_MS=12*60*1e3;import fs3 from"fs";import os3 from"os";import path7 from"path";import fs2 from"fs";import os2 from"os";import path6 from"path";var TOML_KEY_PART_RE=new RegExp(String.raw`^(?:[A-Za-z0-9_-]+|"(?:[^"\\\n]|\\.)*"|'(?:[^'\n])*')(?:\.(?:[A-Za-z0-9_-]+|"(?:[^"\\\n]|\\.)*"|'(?:[^'\n])*'))*$`);init_log_mask();import{createHash as createHash4,randomUUID}from"crypto";import fs4 from"fs";import os4 from"os";import path8 from"path";function isProxyInstanceFile(v3){return v3!==void 0&&"instanceId"in v3}function readProxyInstanceFile(file){let raw;try{raw=fs4.readFileSync(file??instanceFilePath(),"utf8").trim()}catch{return void 0}if(raw.startsWith("{")){try{const parsed=JSON.parse(raw);if(typeof parsed.origin==="string"&&/^https?:\/\/\S+$/.test(parsed.origin)){const windows={};if(parsed.modelWindows&&typeof parsed.modelWindows==="object"){for(const[k2,v3]of Object.entries(parsed.modelWindows)){const n=Number(v3);if(Number.isFinite(n)&&n>0)windows[k2]=n}}const maxOutputs={};if(parsed.modelMaxOutputs&&typeof parsed.modelMaxOutputs==="object"){for(const[k2,v3]of Object.entries(parsed.modelMaxOutputs)){const n=Number(v3);if(Number.isFinite(n)&&n>0)maxOutputs[k2]=n}}return{origin:parsed.origin,instanceId:typeof parsed.instanceId==="string"?parsed.instanceId:"",pid:typeof parsed.pid==="number"?parsed.pid:0,startedAt:typeof parsed.startedAt==="number"?parsed.startedAt:0,host:typeof parsed.host==="string"?parsed.host:"",port:typeof parsed.port==="number"?parsed.port:0,passthrough:Boolean(parsed.passthrough),mitmDomains:Array.isArray(parsed.mitmDomains)?parsed.mitmDomains.map(String):[],modelWindows:windows,modelMaxOutputs:Object.keys(maxOutputs).length>0?maxOutputs:void 0,launchToken:typeof parsed.launchToken==="string"?parsed.launchToken:void 0,lane:typeof parsed.lane==="string"&&parsed.lane!==""?parsed.lane:void 0,codeFingerprint:typeof parsed.codeFingerprint==="string"&&parsed.codeFingerprint!==""?parsed.codeFingerprint:void 0}}}catch{}}if(/^https?:\/\/\S+$/.test(raw))return{origin:raw};return void 0}function instanceFilePath(){return path8.join(stateDir(),"proxy-origin")}function portZoneFilePath(){return path8.join(stateDir(),"port-zone.json")}function readZonePort(lane,file=portZoneFilePath()){let raw;try{raw=fs4.readFileSync(file,"utf8")}catch{return void 0}try{const parsed=JSON.parse(raw);const v3=parsed?.lanes?.[lane];if(typeof v3==="number"&&Number.isInteger(v3)&&v3>0&&v3<65536)return v3;return void 0}catch{return void 0}}function writeZonePort(lane,port,file=portZoneFilePath()){if(!Number.isInteger(port)||port<=0||port>=65536)return;let cur={};try{const parsed=JSON.parse(fs4.readFileSync(file,"utf8"));if(parsed!==null&&typeof parsed==="object"&&parsed.lanes!==null&&typeof parsed.lanes==="object")cur=parsed}catch{}atomicWriteJson({lanes:{...cur.lanes??{},[lane]:port}},file)}function lanePreferredPort(lane,env=process.env,file=portZoneFilePath()){return readZonePort(lane,file)??resolveZonePortBase(env)}var scriptFingerprints=new Map;function entryScriptFingerprint(scriptPath){if(!scriptPath)return void 0;const resolved=path8.resolve(scriptPath);const cached=scriptFingerprints.get(resolved);if(cached!==void 0)return cached;let digest;try{digest=createHash4("sha256").update(fs4.readFileSync(resolved)).digest("hex")}catch{return void 0}scriptFingerprints.set(resolved,digest);return digest}function atomicWriteJson(obj,filePath){fs4.mkdirSync(path8.dirname(filePath),{recursive:true});const tempPath=`${filePath}.${process.pid}.${randomUUID()}.tmp`;let descriptor;try{descriptor=fs4.openSync(tempPath,"wx",420);fs4.writeSync(descriptor,JSON.stringify(obj)+"\n",null,"utf8");fs4.fsyncSync(descriptor);fs4.closeSync(descriptor);descriptor=void 0;fs4.renameSync(tempPath,filePath)}catch(error){if(descriptor!==void 0){try{fs4.closeSync(descriptor)}catch{}}try{fs4.unlinkSync(tempPath)}catch{}throw error}}function startingMarkerPath(){return path8.join(stateDir(),"proxy-starting")}function readStartingMarker(file){let raw;try{raw=fs4.readFileSync(file??startingMarkerPath(),"utf8")}catch{return void 0}try{const parsed=JSON.parse(raw);if(typeof parsed.token!=="string"||parsed.token==="")return void 0;if(typeof parsed.pid!=="number"||!Number.isInteger(parsed.pid)||parsed.pid<=0)return void 0;if(typeof parsed.startedAt!=="number")return void 0;return{token:parsed.token,pid:parsed.pid,host:typeof parsed.host==="string"?parsed.host:"",port:typeof parsed.port==="number"?parsed.port:0,startedAt:parsed.startedAt,...typeof parsed.lane==="string"&&parsed.lane!==""?{lane:parsed.lane}:{}}}catch{return void 0}}function claimStartingMarker(marker,file){const filePath=file??startingMarkerPath();let descriptor;try{fs4.mkdirSync(path8.dirname(filePath),{recursive:true});descriptor=fs4.openSync(filePath,"wx",420);fs4.writeSync(descriptor,JSON.stringify(marker)+"\n",null,"utf8");fs4.fsyncSync(descriptor);descriptor=void 0;return true}catch{if(descriptor!==void 0){try{fs4.closeSync(descriptor)}catch{}}return false}}function clearStartingMarker(token,file){const filePath=file??startingMarkerPath();const current=readStartingMarker(filePath);if(current&¤t.token===token){try{fs4.unlinkSync(filePath)}catch{}}}function removeStartingMarker(file){try{fs4.unlinkSync(file??startingMarkerPath())}catch{}}function isPidAlive(pid){if(!Number.isInteger(pid)||pid<=0)return false;try{process.kill(pid,0);return true}catch(err){return err.code==="EPERM"}}function registryDirPath(){return path8.join(stateDir(),"instances")}function legacyRegistryFilePath(){return path8.join(stateDir(),"instances.json")}function safeReadJson(file){try{return JSON.parse(fs4.readFileSync(file,"utf8"))}catch{return void 0}}function coerceEntry(value){if(!value||typeof value!=="object")return void 0;const o=value;if(typeof o.instanceId!=="string"||o.instanceId==="")return void 0;const windows={};if(o.modelWindows&&typeof o.modelWindows==="object"){for(const[k2,v3]of Object.entries(o.modelWindows)){const n=Number(v3);if(Number.isFinite(n)&&n>0)windows[k2]=n}}const maxOutputs={};if(o.modelMaxOutputs&&typeof o.modelMaxOutputs==="object"){for(const[k2,v3]of Object.entries(o.modelMaxOutputs)){const n=Number(v3);if(Number.isFinite(n)&&n>0)maxOutputs[k2]=n}}return{instanceId:o.instanceId,pid:typeof o.pid==="number"?o.pid:0,port:typeof o.port==="number"?o.port:0,origin:typeof o.origin==="string"?o.origin:"",startedAt:typeof o.startedAt==="number"?o.startedAt:0,...typeof o.host==="string"&&o.host!==""?{host:o.host}:{},...typeof o.passthrough==="boolean"?{passthrough:o.passthrough}:{},...Array.isArray(o.mitmDomains)?{mitmDomains:o.mitmDomains.map(String)}:{},...Object.keys(windows).length>0?{modelWindows:windows}:{},...Object.keys(maxOutputs).length>0?{modelMaxOutputs:maxOutputs}:{},...typeof o.lane==="string"&&o.lane!==""?{lane:o.lane}:{},...typeof o.codeFingerprint==="string"&&o.codeFingerprint!==""?{codeFingerprint:o.codeFingerprint}:{}}}function readMarkerNames(){try{return fs4.readdirSync(registryDirPath())}catch{return[]}}function readAllRegistryEntries(){const seen=new Set;const out=[];for(const name of readMarkerNames()){if(!name.endsWith(".json"))continue;const entry=coerceEntry(safeReadJson(path8.join(registryDirPath(),name)));if(entry&&!seen.has(entry.instanceId)){seen.add(entry.instanceId);out.push(entry)}}const legacy=safeReadJson(legacyRegistryFilePath());if(legacy&&Array.isArray(legacy.instances)){for(const raw of legacy.instances){const entry=coerceEntry(raw);if(entry&&!seen.has(entry.instanceId)){seen.add(entry.instanceId);out.push(entry)}}}return out}function discoverLiveInstances(){const out=[];for(const e of readAllRegistryEntries()){if(!isPidAlive(e.pid))continue;out.push({origin:e.origin,instanceId:e.instanceId,pid:e.pid,startedAt:e.startedAt,host:e.host??"",port:e.port,passthrough:Boolean(e.passthrough),mitmDomains:e.mitmDomains??[],modelWindows:e.modelWindows??{},modelMaxOutputs:e.modelMaxOutputs,lane:e.lane,codeFingerprint:e.codeFingerprint})}return out}var TWIN_ADOPT_EXIT_CODE=3;import net2 from"net";var CONNECT_PROBE_TIMEOUT_MS=2e3;function originHostPort(origin){try{const u2=new URL(origin);if(u2.protocol!=="http:"&&u2.protocol!=="https:")return void 0;const host=u2.hostname.replace(/^\[|\]$/g,"");if(host==="")return void 0;const port=u2.port!==""?Number(u2.port):u2.protocol==="https:"?443:80;return Number.isInteger(port)&&port>0?{host,port}:void 0}catch{return void 0}}function attemptConnect(host,port,timeoutMs){return new Promise(resolve=>{let settled=false;const settle=outcome=>{if(settled)return;settled=true;socket.destroy();resolve(outcome)};const socket=net2.connect({host,port});socket.setTimeout(timeoutMs);socket.once("connect",()=>settle({ok:true}));socket.once("timeout",()=>settle({ok:false,detail:`connect timeout after ${timeoutMs}ms`}));socket.once("error",err=>settle({ok:false,detail:typeof err.code==="string"&&err.code.length>0?err.code:String(err.message??err)}))})}async function tcpConnectable(origin,timeoutMs=CONNECT_PROBE_TIMEOUT_MS){const hp=originHostPort(origin);if(hp===void 0)return false;const outcome=await attemptConnect(hp.host,hp.port,timeoutMs);return outcome.ok}import fs12 from"fs";import path18 from"path";import os7 from"os";import crypto4 from"crypto";import{execFileSync as execFileSync4,spawnSync as spawnSync2}from"child_process";import{fileURLToPath as fileURLToPath4}from"url";import fs5 from"fs";import path9 from"path";import{execFile,spawnSync}from"child_process";import{promisify}from"util";var DSH_PACKAGE="billion-context";var DSH_EXEC_TIMEOUT_MS=5*60*1e3;var pExecFile=promisify(execFile);import fs6 from"fs";import path10 from"path";import{execFile as execFile2}from"child_process";import{promisify as promisify2}from"util";var PI_NPM_SPEC="npm:billion-context";var PI_EXEC_TIMEOUT_MS=5*60*1e3;var pExecFile2=promisify2(execFile2);import{readFile as readFile2,writeFile as writeFile2,mkdir as mkdir2,access,constants,rm,cp,unlink as unlink2,lstat,stat,rename as rename2,mkdtemp,readdir}from"fs/promises";import{execFile as execFile3,spawn}from"child_process";import{realpathSync}from"fs";import crypto2 from"crypto";import Qr from"events";import I from"fs";import{EventEmitter as Di}from"events";import Cs from"stream";import{StringDecoder as Hr}from"string_decoder";import cr from"path";import Kt from"fs";import{dirname as Fn,parse as kn}from"path";import{EventEmitter as Dn}from"events";import zi from"assert";import{Buffer as Ot}from"buffer";import*as Ps from"zlib";import en from"zlib";import{posix as Zt}from"path";import{basename as _n}from"path";import mi from"fs";import X from"fs";import js from"path";import{win32 as Pn}from"path";import ar from"path";import Br from"fs";import co from"assert";import{randomBytes as Mr}from"crypto";import u from"fs";import R from"path";import pr from"fs";import wi from"fs";import we from"path";import k from"fs";import ro from"fs/promises";import Si from"path";import{join as xr}from"path";import v from"fs";import Pr from"path";var zr=Object.defineProperty;var Ur=(s3,t)=>{for(var e in t)zr(s3,e,{get:t[e],enumerable:true})};var Ds=typeof process=="object"&&process?process:{stdout:null,stderr:null};var Wr=s3=>!!s3&&typeof s3=="object"&&(s3 instanceof A||s3 instanceof Cs||Gr(s3)||Zr(s3));var Gr=s3=>!!s3&&typeof s3=="object"&&s3 instanceof Di&&typeof s3.pipe=="function"&&s3.pipe!==Cs.Writable.prototype.pipe;var Zr=s3=>!!s3&&typeof s3=="object"&&s3 instanceof Di&&typeof s3.write=="function"&&typeof s3.end=="function";var Q=Symbol("EOF");var J=Symbol("maybeEmitEnd");var nt=Symbol("emittedEnd");var De=Symbol("emittingEnd");var qt=Symbol("emittedError");var Ne=Symbol("closed");var Ns=Symbol("read");var Ae=Symbol("flush");var As=Symbol("flushChunk");var z=Symbol("encoding");var Mt=Symbol("decoder");var g=Symbol("flowing");var Qt=Symbol("paused");var Bt=Symbol("resume");var b=Symbol("buffer");var N=Symbol("pipes");var _=Symbol("bufferLength");var bi=Symbol("bufferPush");var Ie=Symbol("bufferShift");var L=Symbol("objectMode");var S=Symbol("destroyed");var _i=Symbol("error");var Oi=Symbol("emitData");var Is=Symbol("emitEnd");var Ti=Symbol("emitEnd2");var Z=Symbol("async");var xi=Symbol("abort");var Ce=Symbol("aborted");var Jt=Symbol("signal");var Rt=Symbol("dataListeners");var C=Symbol("discarded");var jt=s3=>Promise.resolve().then(s3);var Yr=s3=>s3();var Kr=s3=>s3==="end"||s3==="finish"||s3==="prefinish";var Vr=s3=>s3 instanceof ArrayBuffer||!!s3&&typeof s3=="object"&&s3.constructor&&s3.constructor.name==="ArrayBuffer"&&s3.byteLength>=0;var $r=s3=>!Buffer.isBuffer(s3)&&ArrayBuffer.isView(s3);var Fe=class{src;dest;opts;ondrain;constructor(t,e,i){this.src=t,this.dest=e,this.opts=i,this.ondrain=()=>t[Bt](),this.dest.on("drain",this.ondrain)}unpipe(){this.dest.removeListener("drain",this.ondrain)}proxyErrors(t){}end(){this.unpipe(),this.opts.end&&this.dest.end()}};var Li=class extends Fe{unpipe(){this.src.removeListener("error",this.proxyErrors),super.unpipe()}constructor(t,e,i){super(t,e,i),this.proxyErrors=r=>this.dest.emit("error",r),t.on("error",this.proxyErrors)}};var Xr=s3=>!!s3.objectMode;var qr=s3=>!s3.objectMode&&!!s3.encoding&&s3.encoding!=="buffer";var A=class extends Di{[g]=false;[Qt]=false;[N]=[];[b]=[];[L];[z];[Z];[Mt];[Q]=false;[nt]=false;[De]=false;[Ne]=false;[qt]=null;[_]=0;[S]=false;[Jt];[Ce]=false;[Rt]=0;[C]=false;writable=true;readable=true;constructor(...t){let e=t[0]||{};if(super(),e.objectMode&&typeof e.encoding=="string")throw new TypeError("Encoding and objectMode may not be used together");Xr(e)?(this[L]=true,this[z]=null):qr(e)?(this[z]=e.encoding,this[L]=false):(this[L]=false,this[z]=null),this[Z]=!!e.async,this[Mt]=this[z]?new Hr(this[z]):null,e&&e.debugExposeBuffer===true&&Object.defineProperty(this,"buffer",{get:()=>this[b]}),e&&e.debugExposePipes===true&&Object.defineProperty(this,"pipes",{get:()=>this[N]});let{signal:i}=e;i&&(this[Jt]=i,i.aborted?this[xi]():i.addEventListener("abort",()=>this[xi]()))}get bufferLength(){return this[_]}get encoding(){return this[z]}set encoding(t){throw new Error("Encoding must be set at instantiation time")}setEncoding(t){throw new Error("Encoding must be set at instantiation time")}get objectMode(){return this[L]}set objectMode(t){throw new Error("objectMode must be set at instantiation time")}get async(){return this[Z]}set async(t){this[Z]=this[Z]||!!t}[xi](){this[Ce]=true,this.emit("abort",this[Jt]?.reason),this.destroy(this[Jt]?.reason)}get aborted(){return this[Ce]}set aborted(t){}write(t,e,i){if(this[Ce])return false;if(this[Q])throw new Error("write after end");if(this[S])return this.emit("error",Object.assign(new Error("Cannot call write after a stream was destroyed"),{code:"ERR_STREAM_DESTROYED"})),true;typeof e=="function"&&(i=e,e="utf8"),e||(e="utf8");let r=this[Z]?jt:Yr;if(!this[L]&&!Buffer.isBuffer(t)){if($r(t))t=Buffer.from(t.buffer,t.byteOffset,t.byteLength);else if(Vr(t))t=Buffer.from(t);else if(typeof t!="string")throw new Error("Non-contiguous data written to non-objectMode stream")}return this[L]?(this[g]&&this[_]!==0&&this[Ae](true),this[g]?this.emit("data",t):this[bi](t),this[_]!==0&&this.emit("readable"),i&&r(i),this[g]):t.length?(typeof t=="string"&&!(e===this[z]&&!this[Mt]?.lastNeed)&&(t=Buffer.from(t,e)),Buffer.isBuffer(t)&&this[z]&&(t=this[Mt].write(t)),this[g]&&this[_]!==0&&this[Ae](true),this[g]?this.emit("data",t):this[bi](t),this[_]!==0&&this.emit("readable"),i&&r(i),this[g]):(this[_]!==0&&this.emit("readable"),i&&r(i),this[g])}read(t){if(this[S])return null;if(this[C]=false,this[_]===0||t===0||t&&t>this[_])return this[J](),null;this[L]&&(t=null),this[b].length>1&&!this[L]&&(this[b]=[this[z]?this[b].join(""):Buffer.concat(this[b],this[_])]);let e=this[Ns](t||null,this[b][0]);return this[J](),e}[Ns](t,e){if(this[L])this[Ie]();else{let i=e;t===i.length||t===null?this[Ie]():typeof i=="string"?(this[b][0]=i.slice(t),e=i.slice(0,t),this[_]-=t):(this[b][0]=i.subarray(t),e=i.subarray(0,t),this[_]-=t)}return this.emit("data",e),!this[b].length&&!this[Q]&&this.emit("drain"),e}end(t,e,i){return typeof t=="function"&&(i=t,t=void 0),typeof e=="function"&&(i=e,e="utf8"),t!==void 0&&this.write(t,e),i&&this.once("end",i),this[Q]=true,this.writable=false,(this[g]||!this[Qt])&&this[J](),this}[Bt](){this[S]||(!this[Rt]&&!this[N].length&&(this[C]=true),this[Qt]=false,this[g]=true,this.emit("resume"),this[b].length?this[Ae]():this[Q]?this[J]():this.emit("drain"))}resume(){return this[Bt]()}pause(){this[g]=false,this[Qt]=true,this[C]=false}get destroyed(){return this[S]}get flowing(){return this[g]}get paused(){return this[Qt]}[bi](t){this[L]?this[_]+=1:this[_]+=t.length,this[b].push(t)}[Ie](){return this[L]?this[_]-=1:this[_]-=this[b][0].length,this[b].shift()}[Ae](t=false){do;while(this[As](this[Ie]())&&this[b].length);!t&&!this[b].length&&!this[Q]&&this.emit("drain")}[As](t){return this.emit("data",t),this[g]}pipe(t,e){if(this[S])return t;this[C]=false;let i=this[nt];return e=e||{},t===Ds.stdout||t===Ds.stderr?e.end=false:e.end=e.end!==false,e.proxyErrors=!!e.proxyErrors,i?e.end&&t.end():(this[N].push(e.proxyErrors?new Li(this,t,e):new Fe(this,t,e)),this[Z]?jt(()=>this[Bt]()):this[Bt]()),t}unpipe(t){let e=this[N].find(i=>i.dest===t);e&&(this[N].length===1?(this[g]&&this[Rt]===0&&(this[g]=false),this[N]=[]):this[N].splice(this[N].indexOf(e),1),e.unpipe())}addListener(t,e){return this.on(t,e)}on(t,e){let i=super.on(t,e);if(t==="data")this[C]=false,this[Rt]++,!this[N].length&&!this[g]&&this[Bt]();else if(t==="readable"&&this[_]!==0)super.emit("readable");else if(Kr(t)&&this[nt])super.emit(t),this.removeAllListeners(t);else if(t==="error"&&this[qt]){let r=e;this[Z]?jt(()=>r.call(this,this[qt])):r.call(this,this[qt])}return i}removeListener(t,e){return this.off(t,e)}off(t,e){let i=super.off(t,e);return t==="data"&&(this[Rt]=this.listeners("data").length,this[Rt]===0&&!this[C]&&!this[N].length&&(this[g]=false)),i}removeAllListeners(t){let e=super.removeAllListeners(t);return(t==="data"||t===void 0)&&(this[Rt]=0,!this[C]&&!this[N].length&&(this[g]=false)),e}get emittedEnd(){return this[nt]}[J](){!this[De]&&!this[nt]&&!this[S]&&this[b].length===0&&this[Q]&&(this[De]=true,this.emit("end"),this.emit("prefinish"),this.emit("finish"),this[Ne]&&this.emit("close"),this[De]=false)}emit(t,...e){let i=e[0];if(t!=="error"&&t!=="close"&&t!==S&&this[S])return false;if(t==="data")return!this[L]&&!i?false:this[Z]?(jt(()=>this[Oi](i)),true):this[Oi](i);if(t==="end")return this[Is]();if(t==="close"){if(this[Ne]=true,!this[nt]&&!this[S])return false;let n=super.emit("close");return this.removeAllListeners("close"),n}else if(t==="error"){this[qt]=i,super.emit(_i,i);let n=!this[Jt]||this.listeners("error").length?super.emit("error",i):false;return this[J](),n}else if(t==="resume"){let n=super.emit("resume");return this[J](),n}else if(t==="finish"||t==="prefinish"){let n=super.emit(t);return this.removeAllListeners(t),n}let r=super.emit(t,...e);return this[J](),r}[Oi](t){for(let i of this[N])i.dest.write(t)===false&&this.pause();let e=this[C]?false:super.emit("data",t);return this[J](),e}[Is](){return this[nt]?false:(this[nt]=true,this.readable=false,this[Z]?(jt(()=>this[Ti]()),true):this[Ti]())}[Ti](){if(this[Mt]){let e=this[Mt].end();if(e){for(let i of this[N])i.dest.write(e);this[C]||super.emit("data",e)}}for(let e of this[N])e.end();let t=super.emit("end");return this.removeAllListeners("end"),t}async collect(){let t=Object.assign([],{dataLength:0});this[L]||(t.dataLength=0);let e=this.promise();return this.on("data",i=>{t.push(i),this[L]||(t.dataLength+=i.length)}),await e,t}async concat(){if(this[L])throw new Error("cannot concat in objectMode");let t=await this.collect();return this[z]?t.join(""):Buffer.concat(t,t.dataLength)}async promise(){return new Promise((t,e)=>{this.on(S,()=>e(new Error("stream destroyed"))),this.on("error",i=>e(i)),this.on("end",()=>t())})}[Symbol.asyncIterator](){this[C]=false;let t=false,e=async()=>(this.pause(),t=true,{value:void 0,done:true});return{next:()=>{if(t)return e();let r=this.read();if(r!==null)return Promise.resolve({done:false,value:r});if(this[Q])return e();let n,o,h=d2=>{this.off("data",a),this.off("end",l3),this.off(S,c),e(),o(d2)},a=d2=>{this.off("error",h),this.off("end",l3),this.off(S,c),this.pause(),n({value:d2,done:!!this[Q]})},l3=()=>{this.off("error",h),this.off("data",a),this.off(S,c),e(),n({done:true,value:void 0})},c=()=>h(new Error("stream destroyed"));return new Promise((d2,y2)=>{o=y2,n=d2,this.once(S,c),this.once("error",h),this.once("end",l3),this.once("data",a)})},throw:e,return:e,[Symbol.asyncIterator](){return this},[Symbol.asyncDispose]:async()=>{}}}[Symbol.iterator](){this[C]=false;let t=false,e=()=>(this.pause(),this.off(_i,e),this.off(S,e),this.off("end",e),t=true,{done:true,value:void 0}),i=()=>{if(t)return e();let r=this.read();return r===null?e():{done:false,value:r}};return this.once("end",e),this.once(_i,e),this.once(S,e),{next:i,throw:e,return:e,[Symbol.iterator](){return this},[Symbol.dispose]:()=>{}}}destroy(t){if(this[S])return t?this.emit("error",t):this.emit(S),this;this[S]=true,this[C]=true,this[b].length=0,this[_]=0;let e=this;return typeof e.close=="function"&&!this[Ne]&&e.close(),t?this.emit("error",t):this.emit(S),this}static get isStream(){return Wr}};var Jr=I.writev;var ht=Symbol("_autoClose");var H=Symbol("_close");var te=Symbol("_ended");var m=Symbol("_fd");var Ni=Symbol("_finished");var tt=Symbol("_flags");var Ai=Symbol("_flush");var ki=Symbol("_handleChunk");var vi=Symbol("_makeBuf");var ie=Symbol("_mode");var ke=Symbol("_needDrain");var Ut=Symbol("_onerror");var Ht=Symbol("_onopen");var Ii=Symbol("_onread");var Pt=Symbol("_onwrite");var at=Symbol("_open");var U=Symbol("_path");var ot=Symbol("_pos");var Y=Symbol("_queue");var zt=Symbol("_read");var Ci=Symbol("_readSize");var j=Symbol("_reading");var ee=Symbol("_remain");var Fi=Symbol("_size");var ve=Symbol("_write");var gt=Symbol("_writing");var Me=Symbol("_defaultFlag");var bt=Symbol("_errored");var _t=class extends A{[bt]=false;[m];[U];[Ci];[j]=false;[Fi];[ee];[ht];constructor(t,e){if(e=e||{},super(e),this.readable=true,this.writable=false,typeof t!="string")throw new TypeError("path must be a string");this[bt]=false,this[m]=typeof e.fd=="number"?e.fd:void 0,this[U]=t,this[Ci]=e.readSize||16*1024*1024,this[j]=false,this[Fi]=typeof e.size=="number"?e.size:1/0,this[ee]=this[Fi],this[ht]=typeof e.autoClose=="boolean"?e.autoClose:true,typeof this[m]=="number"?this[zt]():this[at]()}get fd(){return this[m]}get path(){return this[U]}write(){throw new TypeError("this is a readable stream")}end(){throw new TypeError("this is a readable stream")}[at](){I.open(this[U],"r",(t,e)=>this[Ht](t,e))}[Ht](t,e){t?this[Ut](t):(this[m]=e,this.emit("open",e),this[zt]())}[vi](){return Buffer.allocUnsafe(Math.min(this[Ci],this[ee]))}[zt](){if(!this[j]){this[j]=true;let t=this[vi]();if(t.length===0)return process.nextTick(()=>this[Ii](null,0,t));I.read(this[m],t,0,t.length,null,(e,i,r)=>this[Ii](e,i,r))}}[Ii](t,e,i){this[j]=false,t?this[Ut](t):this[ki](e,i)&&this[zt]()}[H](){if(this[ht]&&typeof this[m]=="number"){let t=this[m];this[m]=void 0,I.close(t,e=>e?this.emit("error",e):this.emit("close"))}}[Ut](t){this[j]=true,this[H](),this.emit("error",t)}[ki](t,e){let i=false;return this[ee]-=t,t>0&&(i=super.write(t<e.length?e.subarray(0,t):e)),(t===0||this[ee]<=0)&&(i=false,this[H](),super.end()),i}emit(t,...e){switch(t){case"prefinish":case"finish":return false;case"drain":return typeof this[m]=="number"&&this[zt](),false;case"error":return this[bt]?false:(this[bt]=true,super.emit(t,...e));default:return super.emit(t,...e)}}};var Be=class extends _t{[at](){let t=true;try{this[Ht](null,I.openSync(this[U],"r")),t=false}finally{t&&this[H]()}}[zt](){let t=true;try{if(!this[j]){this[j]=true;do{let e=this[vi](),i=e.length===0?0:I.readSync(this[m],e,0,e.length,null);if(!this[ki](i,e))break}while(true);this[j]=false}t=false}finally{t&&this[H]()}}[H](){if(this[ht]&&typeof this[m]=="number"){let t=this[m];this[m]=void 0,I.closeSync(t),this.emit("close")}}};var et=class extends Qr{readable=false;writable=true;[bt]=false;[gt]=false;[te]=false;[Y]=[];[ke]=false;[U];[ie];[ht];[m];[Me];[tt];[Ni]=false;[ot];constructor(t,e){e=e||{},super(e),this[U]=t,this[m]=typeof e.fd=="number"?e.fd:void 0,this[ie]=e.mode===void 0?438:e.mode,this[ot]=typeof e.start=="number"?e.start:void 0,this[ht]=typeof e.autoClose=="boolean"?e.autoClose:true;let i=this[ot]!==void 0?"r+":"w";this[Me]=e.flags===void 0,this[tt]=e.flags===void 0?i:e.flags,this[m]===void 0&&this[at]()}emit(t,...e){if(t==="error"){if(this[bt])return false;this[bt]=true}return super.emit(t,...e)}get fd(){return this[m]}get path(){return this[U]}[Ut](t){this[H](),this[gt]=true,this.emit("error",t)}[at](){I.open(this[U],this[tt],this[ie],(t,e)=>this[Ht](t,e))}[Ht](t,e){this[Me]&&this[tt]==="r+"&&t&&t.code==="ENOENT"?(this[tt]="w",this[at]()):t?this[Ut](t):(this[m]=e,this.emit("open",e),this[gt]||this[Ai]())}end(t,e){return t&&this.write(t,e),this[te]=true,!this[gt]&&!this[Y].length&&typeof this[m]=="number"&&this[Pt](null,0),this}write(t,e){return typeof t=="string"&&(t=Buffer.from(t,e)),this[te]?(this.emit("error",new Error("write() after end()")),false):this[m]===void 0||this[gt]||this[Y].length?(this[Y].push(t),this[ke]=true,false):(this[gt]=true,this[ve](t),true)}[ve](t){I.write(this[m],t,0,t.length,this[ot],(e,i)=>this[Pt](e,i))}[Pt](t,e){t?this[Ut](t):(this[ot]!==void 0&&typeof e=="number"&&(this[ot]+=e),this[Y].length?this[Ai]():(this[gt]=false,this[te]&&!this[Ni]?(this[Ni]=true,this[H](),this.emit("finish")):this[ke]&&(this[ke]=false,this.emit("drain"))))}[Ai](){if(this[Y].length===0)this[te]&&this[Pt](null,0);else if(this[Y].length===1)this[ve](this[Y].pop());else{let t=this[Y];this[Y]=[],Jr(this[m],t,this[ot],(e,i)=>this[Pt](e,i))}}[H](){if(this[ht]&&typeof this[m]=="number"){let t=this[m];this[m]=void 0,I.close(t,e=>e?this.emit("error",e):this.emit("close"))}}};var Wt=class extends et{[at](){let t;if(this[Me]&&this[tt]==="r+")try{t=I.openSync(this[U],this[tt],this[ie])}catch(e){if(e?.code==="ENOENT")return this[tt]="w",this[at]();throw e}else t=I.openSync(this[U],this[tt],this[ie]);this[Ht](null,t)}[H](){if(this[ht]&&typeof this[m]=="number"){let t=this[m];this[m]=void 0,I.closeSync(t),this.emit("close")}}[ve](t){let e=true;try{this[Pt](null,I.writeSync(this[m],t,0,t.length,this[ot])),e=false}finally{if(e)try{this[H]()}catch{}}}};var jr=new Map([["C","cwd"],["f","file"],["z","gzip"],["P","preservePaths"],["U","unlink"],["strip-components","strip"],["stripComponents","strip"],["keep-newer","newer"],["keepNewer","newer"],["keep-newer-files","newer"],["keepNewerFiles","newer"],["k","keep"],["keep-existing","keep"],["keepExisting","keep"],["m","noMtime"],["no-mtime","noMtime"],["p","preserveOwner"],["L","follow"],["h","follow"],["onentry","onReadEntry"]]);var Fs=s3=>!!s3.sync&&!!s3.file;var ks=s3=>!s3.sync&&!!s3.file;var vs=s3=>!!s3.sync&&!s3.file;var Ms=s3=>!s3.sync&&!s3.file;var Bs=s3=>!!s3.file;var tn=s3=>{let t=jr.get(s3);return t||s3};var se=(s3={})=>{if(!s3)return{};let t={};for(let[e,i]of Object.entries(s3)){let r=tn(e);t[r]=i}return t.chmod===void 0&&t.noChmod===false&&(t.chmod=true),delete t.noChmod,t};var K=(s3,t,e,i,r)=>Object.assign((n=[],o,h)=>{Array.isArray(n)&&(o=n,n={}),typeof o=="function"&&(h=o,o=void 0),o=o?Array.from(o):[];let a=se(n);if(r?.(a,o),Fs(a)){if(typeof h=="function")throw new TypeError("callback not supported for sync tar functions");return s3(a,o)}else if(ks(a)){let l3=t(a,o);return h?l3.then(()=>h(),h):l3}else if(vs(a)){if(typeof h=="function")throw new TypeError("callback not supported for sync tar functions");return e(a,o)}else if(Ms(a)){if(typeof h=="function")throw new TypeError("callback only supported with file option");return i(a,o)}throw new Error("impossible options??")},{syncFile:s3,asyncFile:t,syncNoFile:e,asyncNoFile:i,validate:r});var sn=en.constants||{ZLIB_VERNUM:4736};var M=Object.freeze(Object.assign(Object.create(null),{Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_MEM_ERROR:-4,Z_BUF_ERROR:-5,Z_VERSION_ERROR:-6,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,DEFLATE:1,INFLATE:2,GZIP:3,GUNZIP:4,DEFLATERAW:5,INFLATERAW:6,UNZIP:7,BROTLI_DECODE:8,BROTLI_ENCODE:9,Z_MIN_WINDOWBITS:8,Z_MAX_WINDOWBITS:15,Z_DEFAULT_WINDOWBITS:15,Z_MIN_CHUNK:64,Z_MAX_CHUNK:1/0,Z_DEFAULT_CHUNK:16384,Z_MIN_MEMLEVEL:1,Z_MAX_MEMLEVEL:9,Z_DEFAULT_MEMLEVEL:8,Z_MIN_LEVEL:-1,Z_MAX_LEVEL:9,Z_DEFAULT_LEVEL:-1,BROTLI_OPERATION_PROCESS:0,BROTLI_OPERATION_FLUSH:1,BROTLI_OPERATION_FINISH:2,BROTLI_OPERATION_EMIT_METADATA:3,BROTLI_MODE_GENERIC:0,BROTLI_MODE_TEXT:1,BROTLI_MODE_FONT:2,BROTLI_DEFAULT_MODE:0,BROTLI_MIN_QUALITY:0,BROTLI_MAX_QUALITY:11,BROTLI_DEFAULT_QUALITY:11,BROTLI_MIN_WINDOW_BITS:10,BROTLI_MAX_WINDOW_BITS:24,BROTLI_LARGE_MAX_WINDOW_BITS:30,BROTLI_DEFAULT_WINDOW:22,BROTLI_MIN_INPUT_BLOCK_BITS:16,BROTLI_MAX_INPUT_BLOCK_BITS:24,BROTLI_PARAM_MODE:0,BROTLI_PARAM_QUALITY:1,BROTLI_PARAM_LGWIN:2,BROTLI_PARAM_LGBLOCK:3,BROTLI_PARAM_DISABLE_LITERAL_CONTEXT_MODELING:4,BROTLI_PARAM_SIZE_HINT:5,BROTLI_PARAM_LARGE_WINDOW:6,BROTLI_PARAM_NPOSTFIX:7,BROTLI_PARAM_NDIRECT:8,BROTLI_DECODER_RESULT_ERROR:0,BROTLI_DECODER_RESULT_SUCCESS:1,BROTLI_DECODER_RESULT_NEEDS_MORE_INPUT:2,BROTLI_DECODER_RESULT_NEEDS_MORE_OUTPUT:3,BROTLI_DECODER_PARAM_DISABLE_RING_BUFFER_REALLOCATION:0,BROTLI_DECODER_PARAM_LARGE_WINDOW:1,BROTLI_DECODER_NO_ERROR:0,BROTLI_DECODER_SUCCESS:1,BROTLI_DECODER_NEEDS_MORE_INPUT:2,BROTLI_DECODER_NEEDS_MORE_OUTPUT:3,BROTLI_DECODER_ERROR_FORMAT_EXUBERANT_NIBBLE:-1,BROTLI_DECODER_ERROR_FORMAT_RESERVED:-2,BROTLI_DECODER_ERROR_FORMAT_EXUBERANT_META_NIBBLE:-3,BROTLI_DECODER_ERROR_FORMAT_SIMPLE_HUFFMAN_ALPHABET:-4,BROTLI_DECODER_ERROR_FORMAT_SIMPLE_HUFFMAN_SAME:-5,BROTLI_DECODER_ERROR_FORMAT_CL_SPACE:-6,BROTLI_DECODER_ERROR_FORMAT_HUFFMAN_SPACE:-7,BROTLI_DECODER_ERROR_FORMAT_CONTEXT_MAP_REPEAT:-8,BROTLI_DECODER_ERROR_FORMAT_BLOCK_LENGTH_1:-9,BROTLI_DECODER_ERROR_FORMAT_BLOCK_LENGTH_2:-10,BROTLI_DECODER_ERROR_FORMAT_TRANSFORM:-11,BROTLI_DECODER_ERROR_FORMAT_DICTIONARY:-12,BROTLI_DECODER_ERROR_FORMAT_WINDOW_BITS:-13,BROTLI_DECODER_ERROR_FORMAT_PADDING_1:-14,BROTLI_DECODER_ERROR_FORMAT_PADDING_2:-15,BROTLI_DECODER_ERROR_FORMAT_DISTANCE:-16,BROTLI_DECODER_ERROR_DICTIONARY_NOT_SET:-19,BROTLI_DECODER_ERROR_INVALID_ARGUMENTS:-20,BROTLI_DECODER_ERROR_ALLOC_CONTEXT_MODES:-21,BROTLI_DECODER_ERROR_ALLOC_TREE_GROUPS:-22,BROTLI_DECODER_ERROR_ALLOC_CONTEXT_MAP:-25,BROTLI_DECODER_ERROR_ALLOC_RING_BUFFER_1:-26,BROTLI_DECODER_ERROR_ALLOC_RING_BUFFER_2:-27,BROTLI_DECODER_ERROR_ALLOC_BLOCK_TYPE_TREES:-30,BROTLI_DECODER_ERROR_UNREACHABLE:-31},sn));var rn=Ot.concat;var zs=Object.getOwnPropertyDescriptor(Ot,"concat");var nn=s3=>s3;var Bi=zs?.writable===true||zs?.set!==void 0?s3=>{Ot.concat=s3?nn:rn}:s3=>{};var Tt=Symbol("_superWrite");var Gt=class extends Error{code;errno;constructor(t,e){super("zlib: "+t.message,{cause:t}),this.code=t.code,this.errno=t.errno,this.code||(this.code="ZLIB_ERROR"),this.message="zlib: "+t.message,Error.captureStackTrace(this,e??this.constructor)}get name(){return"ZlibError"}};var Pi=Symbol("flushFlag");var re=class extends A{#t=false;#i=false;#s;#n;#r;#e;#o;get sawError(){return this.#t}get handle(){return this.#e}get flushFlag(){return this.#s}constructor(t,e){if(!t||typeof t!="object")throw new TypeError("invalid options for ZlibBase constructor");if(super(t),this.#s=t.flush??0,this.#n=t.finishFlush??0,this.#r=t.fullFlushFlag??0,typeof Ps[e]!="function")throw new TypeError("Compression method not supported: "+e);try{this.#e=new Ps[e](t)}catch(i){throw new Gt(i,this.constructor)}this.#o=i=>{this.#t||(this.#t=true,this.close(),this.emit("error",i))},this.#e?.on("error",i=>this.#o(new Gt(i))),this.once("end",()=>this.close)}close(){this.#e&&(this.#e.close(),this.#e=void 0,this.emit("close"))}reset(){if(!this.#t)return zi(this.#e,"zlib binding closed"),this.#e.reset?.()}flush(t){this.ended||(typeof t!="number"&&(t=this.#r),this.write(Object.assign(Ot.alloc(0),{[Pi]:t})))}end(t,e,i){return typeof t=="function"&&(i=t,e=void 0,t=void 0),typeof e=="function"&&(i=e,e=void 0),t&&(e?this.write(t,e):this.write(t)),this.flush(this.#n),this.#i=true,super.end(i)}get ended(){return this.#i}[Tt](t){return super.write(t)}write(t,e,i){if(typeof e=="function"&&(i=e,e="utf8"),typeof t=="string"&&(t=Ot.from(t,e)),this.#t)return;zi(this.#e,"zlib binding closed");let r=this.#e._handle,n=r.close;r.close=()=>{};let o=this.#e.close;this.#e.close=()=>{},Bi(true);let h;try{let l3=typeof t[Pi]=="number"?t[Pi]:this.#s;h=this.#e._processChunk(t,l3),Bi(false)}catch(l3){Bi(false),this.#o(new Gt(l3,this.write))}finally{this.#e&&(this.#e._handle=r,r.close=n,this.#e.close=o,this.#e.removeAllListeners("error"))}this.#e&&this.#e.on("error",l3=>this.#o(new Gt(l3,this.write)));let a;if(h)if(Array.isArray(h)&&h.length>0){let l3=h[0];a=this[Tt](Ot.from(l3));for(let c=1;c<h.length;c++)a=this[Tt](h[c])}else a=this[Tt](Ot.from(h));return i&&i(),a}};var Pe=class extends re{#t;#i;constructor(t,e){t=t||{},t.flush=t.flush||M.Z_NO_FLUSH,t.finishFlush=t.finishFlush||M.Z_FINISH,t.fullFlushFlag=M.Z_FULL_FLUSH,super(t,e),this.#t=t.level,this.#i=t.strategy}params(t,e){if(!this.sawError){if(!this.handle)throw new Error("cannot switch params when binding is closed");if(!this.handle.params)throw new Error("not supported in this implementation");if(this.#t!==t||this.#i!==e){this.flush(M.Z_SYNC_FLUSH),zi(this.handle,"zlib binding closed");let i=this.handle.flush;this.handle.flush=(r,n)=>{typeof r=="function"&&(n=r,r=this.flushFlag),this.flush(r),n?.()};try{this.handle.params(t,e)}finally{this.handle.flush=i}this.handle&&(this.#t=t,this.#i=e)}}}};var ze=class extends Pe{#t;constructor(t){super(t,"Gzip"),this.#t=t&&!!t.portable}[Tt](t){return this.#t?(this.#t=false,t[9]=255,super[Tt](t)):super[Tt](t)}};var Ue=class extends Pe{constructor(t){super(t,"Unzip")}};var He=class extends re{constructor(t,e){t=t||{},t.flush=t.flush||M.BROTLI_OPERATION_PROCESS,t.finishFlush=t.finishFlush||M.BROTLI_OPERATION_FINISH,t.fullFlushFlag=M.BROTLI_OPERATION_FLUSH,super(t,e)}};var We=class extends He{constructor(t){super(t,"BrotliCompress")}};var Ge=class extends He{constructor(t){super(t,"BrotliDecompress")}};var Ze=class extends re{constructor(t,e){t=t||{},t.flush=t.flush||M.ZSTD_e_continue,t.finishFlush=t.finishFlush||M.ZSTD_e_end,t.fullFlushFlag=M.ZSTD_e_flush,super(t,e)}};var Ye=class extends Ze{constructor(t){super(t,"ZstdCompress")}};var Ke=class extends Ze{constructor(t){super(t,"ZstdDecompress")}};var Us=(s3,t)=>{if(Number.isSafeInteger(s3))s3<0?an(s3,t):hn(s3,t);else throw Error("cannot encode number outside of javascript safe integer range");return t};var hn=(s3,t)=>{t[0]=128;for(var e=t.length;e>1;e--)t[e-1]=s3&255,s3=Math.floor(s3/256)};var an=(s3,t)=>{t[0]=255;var e=false;s3=s3*-1;for(var i=t.length;i>1;i--){var r=s3&255;s3=Math.floor(s3/256),e?t[i-1]=Ws(r):r===0?t[i-1]=0:(e=true,t[i-1]=Gs(r))}};var Hs=s3=>{let t=s3[0],e=t===128?cn(s3.subarray(1,s3.length)):t===255?ln(s3):null;if(e===null)throw Error("invalid base256 encoding");if(!Number.isSafeInteger(e))throw Error("parsed number outside of javascript safe integer range");return e};var ln=s3=>{for(var t=s3.length,e=0,i=false,r=t-1;r>-1;r--){var n=Number(s3[r]),o;i?o=Ws(n):n===0?o=n:(i=true,o=Gs(n)),o!==0&&(e-=o*Math.pow(256,t-r-1))}return e};var cn=s3=>{for(var t=s3.length,e=0,i=t-1;i>-1;i--){var r=Number(s3[i]);r!==0&&(e+=r*Math.pow(256,t-i-1))}return e};var Ws=s3=>(255^s3)&255;var Gs=s3=>(255^s3)+1&255;var Hi={};Ur(Hi,{code:()=>Ve,isCode:()=>ne,isName:()=>dn,name:()=>oe,normalFsTypes:()=>Ui});var ne=s3=>oe.has(s3);var dn=s3=>Ve.has(s3);var Ui=new Set(["0","","1","2","3","4","5","6","7","D"]);var oe=new Map([["0","File"],["","OldFile"],["1","Link"],["2","SymbolicLink"],["3","CharacterDevice"],["4","BlockDevice"],["5","Directory"],["6","FIFO"],["7","ContiguousFile"],["g","GlobalExtendedHeader"],["x","ExtendedHeader"],["A","SolarisACL"],["D","GNUDumpDir"],["I","Inode"],["K","NextFileHasLongLinkpath"],["L","NextFileHasLongPath"],["M","ContinuationFile"],["N","OldGnuLongPath"],["S","SparseFile"],["V","TapeVolumeHeader"],["X","OldExtendedHeader"]]);var Ve=new Map(Array.from(oe).map(s3=>[s3[1],s3[0]]));var un=s3=>s3===void 0||s3<0?void 0:s3;var F=class{cksumValid=false;needPax=false;nullBlock=false;block;path;mode;uid;gid;size;cksum;#t="Unsupported";linkpath;uname;gname;devmaj=0;devmin=0;atime;ctime;mtime;charset;comment;constructor(t,e=0,i,r){Buffer.isBuffer(t)?this.decode(t,e||0,i,r):t&&this.#i(t)}decode(t,e,i,r){if(e||(e=0),!t||!(t.length>=e+512))throw new Error("need 512 bytes for header");let n=xt(t,e+156,1),o=Ui.has(n),h=o?i:void 0,a=o?r:void 0;if(this.path=h?.path??xt(t,e,100),this.mode=h?.mode??a?.mode??lt(t,e+100,8),this.uid=h?.uid??a?.uid??lt(t,e+108,8),this.gid=h?.gid??a?.gid??lt(t,e+116,8),this.size=un(h?.size??a?.size??lt(t,e+124,12)),this.mtime=h?.mtime??a?.mtime??Wi(t,e+136,12),this.cksum=lt(t,e+148,12),a&&this.#i(a,true),h&&this.#i(h),ne(n)&&(this.#t=n||"0"),this.#t==="0"&&this.path.slice(-1)==="/"&&(this.#t="5"),this.#t==="5"&&(this.size=0),this.linkpath=xt(t,e+157,100),t.subarray(e+257,e+265).toString()==="ustar\x0000")if(this.uname=h?.uname??a?.uname??xt(t,e+265,32),this.gname=h?.gname??a?.gname??xt(t,e+297,32),this.devmaj=h?.devmaj??a?.devmaj??lt(t,e+329,8)??0,this.devmin=h?.devmin??a?.devmin??lt(t,e+337,8)??0,t[e+475]!==0){let c=xt(t,e+345,155);this.path=c+"/"+this.path}else{let c=xt(t,e+345,130);c&&(this.path=c+"/"+this.path),this.atime=i?.atime??r?.atime??Wi(t,e+476,12),this.ctime=i?.ctime??r?.ctime??Wi(t,e+488,12)}let l3=256;for(let c=e;c<e+148;c++)l3+=t[c];for(let c=e+156;c<e+512;c++)l3+=t[c];this.cksumValid=l3===this.cksum,this.cksum===void 0&&l3===256&&(this.nullBlock=true)}#i(t,e=false){Object.assign(this,Object.fromEntries(Object.entries(t).filter(([i,r])=>!(r==null||i==="size"&&Number(r)<0||i==="path"&&e||i==="linkpath"&&e||i==="global"))))}encode(t,e=0){if(t||(t=this.block=Buffer.alloc(512)),this.#t==="Unsupported"&&(this.#t="0"),!(t.length>=e+512))throw new Error("need 512 bytes for header");let i=this.ctime||this.atime?130:155,r=mn(this.path||"",i),n=r[0],o=r[1];this.needPax=!!r[2],this.needPax=Lt(t,e,100,n)||this.needPax,this.needPax=ct(t,e+100,8,this.mode)||this.needPax,this.needPax=ct(t,e+108,8,this.uid)||this.needPax,this.needPax=ct(t,e+116,8,this.gid)||this.needPax,this.needPax=ct(t,e+124,12,this.size)||this.needPax,this.needPax=Gi(t,e+136,12,this.mtime)||this.needPax,t[e+156]=Number(this.#t.codePointAt(0)),this.needPax=Lt(t,e+157,100,this.linkpath)||this.needPax,t.write("ustar\x0000",e+257,8),this.needPax=Lt(t,e+265,32,this.uname)||this.needPax,this.needPax=Lt(t,e+297,32,this.gname)||this.needPax,this.needPax=ct(t,e+329,8,this.devmaj)||this.needPax,this.needPax=ct(t,e+337,8,this.devmin)||this.needPax,this.needPax=Lt(t,e+345,i,o)||this.needPax,t[e+475]!==0?this.needPax=Lt(t,e+345,155,o)||this.needPax:(this.needPax=Lt(t,e+345,130,o)||this.needPax,this.needPax=Gi(t,e+476,12,this.atime)||this.needPax,this.needPax=Gi(t,e+488,12,this.ctime)||this.needPax);let h=256;for(let a=e;a<e+148;a++)h+=t[a];for(let a=e+156;a<e+512;a++)h+=t[a];return this.cksum=h,ct(t,e+148,8,this.cksum),this.cksumValid=true,this.needPax}get type(){return this.#t==="Unsupported"?this.#t:oe.get(this.#t)}get typeKey(){return this.#t}set type(t){let e=String(Ve.get(t));if(ne(e)||e==="Unsupported")this.#t=e;else if(ne(t))this.#t=t;else throw new TypeError("invalid entry type: "+t)}};var mn=(s3,t)=>{let i=s3,r="",n,o=Zt.parse(s3).root||".";if(Buffer.byteLength(i)<100)n=[i,r,false];else{r=Zt.dirname(i),i=Zt.basename(i);do Buffer.byteLength(i)<=100&&Buffer.byteLength(r)<=t?n=[i,r,false]:Buffer.byteLength(i)>100&&Buffer.byteLength(r)<=t?n=[i.slice(0,99),r,true]:(i=Zt.join(Zt.basename(r),i),r=Zt.dirname(r));while(r!==o&&n===void 0);n||(n=[s3.slice(0,99),"",true])}return n};var xt=(s3,t,e)=>s3.subarray(t,t+e).toString("utf8").replace(/\0.*/,"");var Wi=(s3,t,e)=>pn(lt(s3,t,e));var pn=s3=>s3===void 0?void 0:new Date(s3*1e3);var lt=(s3,t,e)=>Number(s3[t])&128?Hs(s3.subarray(t,t+e)):wn(s3,t,e);var En=s3=>isNaN(s3)?void 0:s3;var wn=(s3,t,e)=>En(parseInt(s3.subarray(t,t+e).toString("utf8").replace(/\0.*$/,"").trim(),8));var Sn={12:8589934591,8:2097151};var ct=(s3,t,e,i)=>i===void 0?false:i>Sn[e]||i<0?(Us(i,s3.subarray(t,t+e)),true):(yn(s3,t,e,i),false);var yn=(s3,t,e,i)=>s3.write(Rn(i,e),t,e,"ascii");var Rn=(s3,t)=>gn(Math.floor(s3).toString(8),t);var gn=(s3,t)=>(s3.length===t-1?s3:new Array(t-s3.length-1).join("0")+s3+" ")+"\0";var Gi=(s3,t,e,i)=>i===void 0?false:ct(s3,t,e,i.getTime()/1e3);var bn=new Array(156).join("\0");var Lt=(s3,t,e,i)=>i===void 0?false:(s3.write(i+bn,t,e,"utf8"),i.length!==Buffer.byteLength(i)||i.length>e);var ft=class s{atime;mtime;ctime;charset;comment;gid;uid;gname;uname;linkpath;dev;ino;nlink;path;size;mode;global;constructor(t,e=false){this.atime=t.atime,this.charset=t.charset,this.comment=t.comment,this.ctime=t.ctime,this.dev=t.dev,this.gid=t.gid,this.global=e,this.gname=t.gname,this.ino=t.ino,this.linkpath=t.linkpath,this.mtime=t.mtime,this.nlink=t.nlink,this.path=t.path,this.size=t.size,this.uid=t.uid,this.uname=t.uname}encode(){let t=this.encodeBody();if(t==="")return Buffer.allocUnsafe(0);let e=Buffer.byteLength(t),i=512*Math.ceil(1+e/512),r=Buffer.allocUnsafe(i);for(let n=0;n<512;n++)r[n]=0;new F({path:("PaxHeader/"+_n(this.path??"")).slice(0,99),mode:this.mode||420,uid:this.uid,gid:this.gid,size:e,mtime:this.mtime,type:this.global?"GlobalExtendedHeader":"ExtendedHeader",linkpath:"",uname:this.uname||"",gname:this.gname||"",devmaj:0,devmin:0,atime:this.atime,ctime:this.ctime}).encode(r),r.write(t,512,e,"utf8");for(let n=e+512;n<r.length;n++)r[n]=0;return r}encodeBody(){return this.encodeField("path")+this.encodeField("ctime")+this.encodeField("atime")+this.encodeField("dev")+this.encodeField("ino")+this.encodeField("nlink")+this.encodeField("charset")+this.encodeField("comment")+this.encodeField("gid")+this.encodeField("gname")+this.encodeField("linkpath")+this.encodeField("mtime")+this.encodeField("size")+this.encodeField("uid")+this.encodeField("uname")}encodeField(t){if(this[t]===void 0)return"";let e=this[t],i=e instanceof Date?e.getTime()/1e3:e,r=" "+(t==="dev"||t==="ino"||t==="nlink"?"SCHILY.":"")+t+"="+i+`
|
|
126
126
|
`,n=Buffer.byteLength(r),o=Math.floor(Math.log(n)/Math.log(10))+1;return n+o>=Math.pow(10,o)&&(o+=1),o+n+r}static parse(t,e,i=false){return new s(On(Tn(t),e),i)}};var On=(s3,t)=>t?Object.assign({},t,s3):s3;var Tn=s3=>s3.replace(/\n$/,"").split(`
|
|
127
127
|
`).reduce(xn,Object.create(null));var xn=(s3,t)=>{let e=parseInt(t,10);if(e!==Buffer.byteLength(t)+1)return s3;t=t.slice((e+" ").length);let i=t.split("="),r=i.shift();if(!r)return s3;let n=r.replace(/^SCHILY\.(dev|ino|nlink)/,"$1"),o=i.join("=").replace(/\0.*/,"");switch(n){case"path":case"linkpath":case"type":case"charset":case"comment":case"gname":case"uname":s3[n]=o;break;case"ctime":case"atime":case"mtime":s3[n]=new Date(Number(o)*1e3);break;case"size":let h=+o;h>=0&&(s3[n]=h);break;case"gid":case"uid":case"dev":case"ino":case"nlink":case"mode":s3[n]=+o;break}return s3};var Ln=process.env.TESTING_TAR_FAKE_PLATFORM||process.platform;var f=Ln!=="win32"?s3=>String(s3):s3=>String(s3).replaceAll(/\\/g,"/");var $e=class extends A{extended;globalExtended;header;startBlockSize;blockRemain;remain;type;meta=false;ignore=false;path;mode;uid;gid;uname;gname;size=0;mtime;atime;ctime;linkpath;dev;ino;nlink;invalid=false;absolute;unsupported=false;constructor(t,e,i){switch(super({}),this.pause(),this.extended=e,this.globalExtended=i,this.header=t,this.remain=t.size??0,this.startBlockSize=512*Math.ceil(this.remain/512),this.blockRemain=this.startBlockSize,this.type=t.type,this.type){case"File":case"OldFile":case"Link":case"SymbolicLink":case"CharacterDevice":case"BlockDevice":case"Directory":case"FIFO":case"ContiguousFile":case"GNUDumpDir":break;case"NextFileHasLongLinkpath":case"NextFileHasLongPath":case"OldGnuLongPath":case"GlobalExtendedHeader":case"ExtendedHeader":case"OldExtendedHeader":this.meta=true;break;default:this.ignore=true}if(!t.path)throw new Error("no path provided for tar.ReadEntry");this.path=f(t.path),this.mode=t.mode,this.mode&&(this.mode=this.mode&4095),this.uid=t.uid,this.gid=t.gid,this.uname=t.uname,this.gname=t.gname,this.size=this.remain,this.mtime=t.mtime,this.atime=t.atime,this.ctime=t.ctime,this.linkpath=t.linkpath?f(t.linkpath):void 0,this.uname=t.uname,this.gname=t.gname,e&&this.#t(e),i&&this.#t(i,true)}write(t){let e=t.length;if(e>this.blockRemain)throw new Error("writing more to entry than is appropriate");let i=this.remain,r=this.blockRemain;return this.remain=Math.max(0,i-e),this.blockRemain=Math.max(0,r-e),this.ignore?true:i>=e?super.write(t):super.write(t.subarray(0,i))}#t(t,e=false){t.path&&(t.path=f(t.path)),t.linkpath&&(t.linkpath=f(t.linkpath)),Object.assign(this,Object.fromEntries(Object.entries(t).filter(([i,r])=>!(r==null||i==="path"&&e))))}};var Dt=(s3,t,e,i={})=>{s3.file&&(i.file=s3.file),s3.cwd&&(i.cwd=s3.cwd),i.code=e instanceof Error&&e.code||t,i.tarCode=t,!s3.strict&&i.recoverable!==false?(e instanceof Error&&(i=Object.assign(e,i),e=e.message),s3.emit("warn",t,e,i)):e instanceof Error?s3.emit("error",Object.assign(e,i)):s3.emit("error",Object.assign(new Error(`${t}: ${e}`),i))};var Nn=1024*1024;var Xi=Buffer.from([31,139]);var qi=Buffer.from([40,181,47,253]);var An=Math.max(Xi.length,qi.length);var B=Symbol("state");var Nt=Symbol("writeEntry");var it=Symbol("readEntry");var Zi=Symbol("nextEntry");var Zs=Symbol("processEntry");var V=Symbol("extendedHeader");var he=Symbol("globalExtendedHeader");var dt=Symbol("meta");var Ys=Symbol("emitMeta");var p=Symbol("buffer");var st=Symbol("queue");var ut=Symbol("ended");var Yi=Symbol("emittedEnd");var At=Symbol("emit");var w=Symbol("unzip");var Xe=Symbol("consumeChunk");var qe=Symbol("consumeChunkSub");var Ki=Symbol("consumeBody");var Ks=Symbol("consumeMeta");var Vs=Symbol("consumeHeader");var ae=Symbol("consuming");var Vi=Symbol("bufferConcat");var Qe=Symbol("maybeEnd");var Yt=Symbol("writing");var $=Symbol("aborted");var Je=Symbol("onDone");var It=Symbol("sawValidEntry");var je=Symbol("sawNullBlock");var ti=Symbol("sawEOF");var $s=Symbol("closeStream");var In=1e3;var le=Symbol("compressedBytesRead");var $i=Symbol("decompressedBytesRead");var Xs=Symbol("checkDecompressionRatio");var Cn=()=>true;var rt=class extends Dn{file;strict;maxMetaEntrySize;filter;brotli;zstd;maxDecompressionRatio;writable=true;readable=false;[st]=[];[p];[it];[Nt];[B]="begin";[dt]="";[V];[he];[ut]=false;[w];[$]=false;[It];[je]=false;[ti]=false;[Yt]=false;[ae]=false;[Yi]=false;[le]=0;[$i]=0;constructor(t={}){super(),this.file=t.file||"",this.on(Je,()=>{(this[B]==="begin"||this[It]===false)&&this.warn("TAR_BAD_ARCHIVE","Unrecognized archive format")}),t.ondone?this.on(Je,t.ondone):this.on(Je,()=>{this.emit("prefinish"),this.emit("finish"),this.emit("end")}),this.strict=!!t.strict,this.maxDecompressionRatio=typeof t.maxDecompressionRatio=="number"?t.maxDecompressionRatio:In,this.maxMetaEntrySize=t.maxMetaEntrySize||Nn,this.filter=typeof t.filter=="function"?t.filter:Cn;let e=t.file&&(t.file.endsWith(".tar.br")||t.file.endsWith(".tbr"));this.brotli=!(t.gzip||t.zstd)&&t.brotli!==void 0?t.brotli:e?void 0:false;let i=t.file&&(t.file.endsWith(".tar.zst")||t.file.endsWith(".tzst"));this.zstd=!(t.gzip||t.brotli)&&t.zstd!==void 0?t.zstd:i?true:void 0,this.on("end",()=>this[$s]()),typeof t.onwarn=="function"&&this.on("warn",t.onwarn),typeof t.onReadEntry=="function"&&this.on("entry",t.onReadEntry)}warn(t,e,i={}){Dt(this,t,e,i)}[Vs](t,e){this[It]===void 0&&(this[It]=false);let i;try{i=new F(t,e,this[V],this[he])}catch(r){return this.warn("TAR_ENTRY_INVALID",r)}if(i.nullBlock)this[je]?(this[ti]=true,this[B]==="begin"&&(this[B]="header"),this[At]("eof")):(this[je]=true,this[At]("nullBlock"));else if(this[je]=false,!i.cksumValid)this.warn("TAR_ENTRY_INVALID","checksum failure",{header:i});else if(!i.path)this.warn("TAR_ENTRY_INVALID","path is required",{header:i});else{let r=i.type;if(/^(Symbolic)?Link$/.test(r)&&!i.linkpath)this.warn("TAR_ENTRY_INVALID","linkpath required",{header:i});else if(!/^(Symbolic)?Link$/.test(r)&&!/^(Global)?ExtendedHeader$/.test(r)&&i.linkpath)this.warn("TAR_ENTRY_INVALID","linkpath forbidden",{header:i});else{let n=this[Nt]=new $e(i,this[V],this[he]);if(!this[It])if(n.remain){let o=()=>{n.invalid||(this[It]=true)};n.on("end",o)}else this[It]=true;n.meta?n.size>this.maxMetaEntrySize?(n.ignore=true,this[At]("ignoredEntry",n),this[B]="ignore",n.resume()):n.size>0&&(this[dt]="",n.on("data",o=>this[dt]+=o),this[B]="meta"):(this[V]=void 0,n.ignore=n.ignore||!this.filter(n.path,n),n.ignore?(this[At]("ignoredEntry",n),this[B]=n.remain?"ignore":"header",n.resume()):(n.remain?this[B]="body":(this[B]="header",n.end()),this[it]?this[st].push(n):(this[st].push(n),this[Zi]())))}}}[$s](){queueMicrotask(()=>this.emit("close"))}[Zs](t){let e=true;if(!t)this[it]=void 0,e=false;else if(Array.isArray(t)){let[i,...r]=t;this.emit(i,...r)}else this[it]=t,this.emit("entry",t),t.emittedEnd||(t.on("end",()=>this[Zi]()),e=false);return e}[Zi](){do;while(this[Zs](this[st].shift()));if(this[st].length===0){let t=this[it];!t||t.flowing||t.size===t.remain?this[Yt]||this.emit("drain"):t.once("drain",()=>this.emit("drain"))}}[Ki](t,e){let i=this[Nt];if(!i)throw new Error("attempt to consume body without entry??");let r=i.blockRemain??0,n=r>=t.length&&e===0?t:t.subarray(e,e+r);return i.write(n),i.blockRemain||(this[B]="header",this[Nt]=void 0,i.end()),n.length}[Ks](t,e){let i=this[Nt],r=this[Ki](t,e);return!this[Nt]&&i&&this[Ys](i),r}[At](t,e,i){this[st].length===0&&!this[it]?this.emit(t,e,i):this[st].push([t,e,i])}[Ys](t){switch(this[At]("meta",this[dt]),t.type){case"ExtendedHeader":case"OldExtendedHeader":this[V]=ft.parse(this[dt],this[V],false);break;case"GlobalExtendedHeader":this[he]=ft.parse(this[dt],this[he],true);break;case"NextFileHasLongPath":case"OldGnuLongPath":{let e=this[V]??Object.create(null);this[V]=e,e.path=this[dt].replace(/\0.*/,"");break}case"NextFileHasLongLinkpath":{let e=this[V]||Object.create(null);this[V]=e,e.linkpath=this[dt].replace(/\0.*/,"");break}default:throw new Error("unknown meta: "+t.type)}}abort(t){if(!this[$]){if(this[w]){let e=this[w];e.write=()=>true,e.end=()=>e,e.emit=()=>false,e.destroy?.()}this[$]=true,this.emit("abort",t),this.warn("TAR_ABORT",t,{recoverable:false})}}[Xs](t){this[$i]+=t.length;let e=this[$i]/this[le];return e>this.maxDecompressionRatio?(this.abort(new Error(`max decompression ratio exceeded: ${e.toFixed(2)} > ${this.maxDecompressionRatio}`)),false):true}write(t,e,i){if(typeof e=="function"&&(i=e,e=void 0),typeof t=="string"&&(t=Buffer.from(t,typeof e=="string"?e:"utf8")),this[$])return i?.(),false;if((this[w]===void 0||this.brotli===void 0&&this[w]===false)&&t){if(this[p]&&(t=Buffer.concat([this[p],t]),this[p]=void 0),t.length<An)return this[p]=t,i?.(),true;for(let a=0;this[w]===void 0&&a<Xi.length;a++)t[a]!==Xi[a]&&(this[w]=false);let o=false;if(this[w]===false&&this.zstd!==false){o=true;for(let a=0;a<qi.length;a++)if(t[a]!==qi[a]){o=false;break}}let h=this.brotli===void 0&&!o;if(this[w]===false&&h)if(t.length<512)if(this[ut])this.brotli=true;else return this[p]=t,i?.(),true;else try{new F(t.subarray(0,512)),this.brotli=false}catch{this.brotli=true}if(this[w]===void 0||this[w]===false&&(this.brotli||o)){let a=this[ut];this[ut]=false,this[w]=this[w]===void 0?new Ue({}):o?new Ke({}):new Ge({}),this[w].on("data",c=>{this[Xs](c)&&this[Xe](c)}),this[w].on("error",c=>{this[$]||this.abort(c)}),this[w].on("end",()=>{this[ut]=true,this[Xe]()}),this[Yt]=true,this[le]+=t.length;let l3=!!this[w][a?"end":"write"](t);return this[Yt]=false,i?.(),l3}}this[Yt]=true,this[w]?(this[le]+=t.length,this[w].write(t)):this[Xe](t),this[Yt]=false;let n=this[st].length>0?false:this[it]?this[it].flowing:true;return!n&&this[st].length===0&&this[it]?.once("drain",()=>this.emit("drain")),i?.(),n}[Vi](t){t&&!this[$]&&(this[p]=this[p]?Buffer.concat([this[p],t]):t)}[Qe](){if(this[ut]&&!this[Yi]&&!this[$]&&!this[ae]){this[Yi]=true;let t=this[Nt];if(t?.blockRemain){let e=this[p]?this[p].length:0;this.warn("TAR_BAD_ARCHIVE",`Truncated input (needed ${t.blockRemain} more bytes, only ${e} available)`,{entry:t}),this[p]&&t.write(this[p]),t.end()}this[At](Je)}}[Xe](t){if(this[ae]&&t)this[Vi](t);else if(!t&&!this[p])this[Qe]();else if(t){if(this[ae]=true,this[p]){this[Vi](t);let e=this[p];this[p]=void 0,this[qe](e)}else this[qe](t);for(;this[p]&&this[p]?.length>=512&&!this[$]&&!this[ti];){let e=this[p];this[p]=void 0,this[qe](e)}this[ae]=false}(!this[p]||this[ut])&&this[Qe]()}[qe](t){let e=0,i=t.length;for(;e+512<=i&&!this[$]&&!this[ti];)switch(this[B]){case"begin":case"header":this[Vs](t,e),e+=512;break;case"ignore":case"body":e+=this[Ki](t,e);break;case"meta":e+=this[Ks](t,e);break;default:throw new Error("invalid state: "+this[B])}e<i&&(this[p]=this[p]?Buffer.concat([t.subarray(e),this[p]]):t.subarray(e))}end(t,e,i){return typeof t=="function"&&(i=t,e=void 0,t=void 0),typeof e=="function"&&(i=e,e=void 0),typeof t=="string"&&(t=Buffer.from(t,e)),i&&this.once("finish",i),this[$]||(this[w]?(t&&(this[le]+=t.length,this[w].write(t)),this[w].end()):(this[ut]=true,(this.brotli===void 0||this.zstd===void 0)&&(t=t||Buffer.alloc(0)),t&&this.write(t),this[Qe]())),this}};var mt=s3=>{let t=s3.length-1,e=-1;for(;t>-1&&s3.charAt(t)==="/";)e=t,t--;return e===-1?s3:s3.slice(0,e)};var vn=s3=>{let t=s3.onReadEntry;s3.onReadEntry=t?e=>{t(e),e.resume()}:e=>e.resume()};var Qi=(s3,t)=>{let e=new Map(t.map(o=>[mt(o),true])),i=s3.filter,r=100,n=(o,h="",a=0)=>{if(a>=r)return e.set(o,false),false;let l3=h||kn(o).root||".",c;if(o===l3)c=false;else{let d2=e.get(o);c=d2!==void 0?d2:n(Fn(o),l3,a+1)}return e.set(o,c),c};s3.filter=i?(o,h)=>i(o,h)&&n(mt(o)):o=>n(mt(o))};var Mn=s3=>{let t=new rt(s3),e=s3.file,i;try{i=Kt.openSync(e,"r");let r=Kt.fstatSync(i),n=s3.maxReadSize||16*1024*1024;if(r.size<n){let o=Buffer.allocUnsafe(r.size),h=Kt.readSync(i,o,0,r.size,0);t.end(h===o.byteLength?o:o.subarray(0,h))}else{let o=0,h=Buffer.allocUnsafe(n);for(;o<r.size;){let a=Kt.readSync(i,h,0,n,o);if(a===0)break;o+=a,t.write(h.subarray(0,a))}t.end()}}finally{if(typeof i=="number")try{Kt.closeSync(i)}catch{}}};var Bn=(s3,t)=>{let e=new rt(s3),i=s3.maxReadSize||16*1024*1024,r=s3.file;return new Promise((o,h)=>{e.on("error",h),e.on("end",o),Kt.stat(r,(a,l3)=>{if(a)h(a);else{let c=new _t(r,{readSize:i,size:l3.size});c.on("error",h),c.pipe(e)}})})};var Ct=K(Mn,Bn,s3=>new rt(s3),s3=>new rt(s3),(s3,t)=>{t?.length&&Qi(s3,t),s3.noResume||vn(s3)});var Ji=(s3,t,e)=>(s3&=4095,e&&(s3=(s3|384)&-19),t&&(s3&256&&(s3|=64),s3&32&&(s3|=8),s3&4&&(s3|=1)),s3);var{isAbsolute:zn,parse:qs}=Pn;var ce=s3=>{let t="",e=qs(s3);for(;zn(s3)||e.root;){let i=s3.charAt(0)==="/"&&s3.slice(0,4)!=="//?/"?"/":e.root;s3=s3.slice(i.length),t+=i,e=qs(s3)}return[t,s3]};var ei=["|","<",">","?",":"];var ji=ei.map(s3=>String.fromCodePoint(61440+Number(s3.codePointAt(0))));var Un=new Map(ei.map((s3,t)=>[s3,ji[t]]));var Hn=new Map(ji.map((s3,t)=>[s3,ei[t]]));var ts=s3=>ei.reduce((t,e)=>t.split(e).join(Un.get(e)),s3);var Qs=s3=>ji.reduce((t,e)=>t.split(e).join(Hn.get(e)),s3);var rr=(s3,t)=>t?(s3=f(s3).replace(/^\.(\/|$)/,""),mt(t)+"/"+s3):f(s3);var Wn=16*1024*1024;var tr=Symbol("process");var er=Symbol("file");var ir=Symbol("directory");var is=Symbol("symlink");var sr=Symbol("hardlink");var fe=Symbol("header");var ii=Symbol("read");var ss=Symbol("lstat");var si=Symbol("onlstat");var rs=Symbol("onread");var ns=Symbol("onreadlink");var os5=Symbol("openfile");var hs=Symbol("onopenfile");var pt=Symbol("close");var ri=Symbol("mode");var as=Symbol("awaitDrain");var es=Symbol("ondrain");var q=Symbol("prefix");var de=class extends A{path;portable;myuid=process.getuid&&process.getuid()||0;myuser=process.env.USER||"";maxReadSize;linkCache;statCache;preservePaths;cwd;strict;mtime;noPax;noMtime;prefix;fd;blockLen=0;blockRemain=0;buf;pos=0;remain=0;length=0;offset=0;win32;absolute;header;type;linkpath;stat;onWriteEntry;#t=false;constructor(t,e={}){let i=se(e);super(),this.path=f(t),this.portable=!!i.portable,this.maxReadSize=i.maxReadSize||Wn,this.linkCache=i.linkCache||new Map,this.statCache=i.statCache||new Map,this.preservePaths=!!i.preservePaths,this.cwd=f(i.cwd||process.cwd()),this.strict=!!i.strict,this.noPax=!!i.noPax,this.noMtime=!!i.noMtime,this.mtime=i.mtime,this.prefix=i.prefix?f(i.prefix):void 0,this.onWriteEntry=i.onWriteEntry,typeof i.onwarn=="function"&&this.on("warn",i.onwarn);let r=false;if(!this.preservePaths){let[o,h]=ce(this.path);o&&typeof h=="string"&&(this.path=h,r=o)}this.win32=!!i.win32||process.platform==="win32",this.win32&&(this.path=Qs(this.path.replaceAll(/\\/g,"/")),t=t.replaceAll(/\\/g,"/")),this.absolute=f(i.absolute||js.resolve(this.cwd,t)),this.path===""&&(this.path="./"),r&&this.warn("TAR_ENTRY_INFO",`stripping ${r} from absolute path`,{entry:this,path:r+this.path});let n=this.statCache.get(this.absolute);n?this[si](n):this[ss]()}warn(t,e,i={}){return Dt(this,t,e,i)}emit(t,...e){return t==="error"&&(this.#t=true),super.emit(t,...e)}[ss](){X.lstat(this.absolute,(t,e)=>{if(t)return this.emit("error",t);this[si](e)})}[si](t){this.statCache.set(this.absolute,t),this.stat=t,t.isFile()||(t.size=0),this.type=Gn(t),this.emit("stat",t),this[tr]()}[tr](){switch(this.type){case"File":return this[er]();case"Directory":return this[ir]();case"SymbolicLink":return this[is]();default:return this.end()}}[ri](t){return Ji(t,this.type==="Directory",this.portable)}[q](t){return rr(t,this.prefix)}[fe](){if(!this.stat)throw new Error("cannot write header before stat");this.type==="Directory"&&this.portable&&(this.noMtime=true),this.onWriteEntry?.(this),this.header=new F({path:this[q](this.path),linkpath:this.type==="Link"&&this.linkpath!==void 0?this[q](this.linkpath):this.linkpath,mode:this[ri](this.stat.mode),uid:this.portable?void 0:this.stat.uid,gid:this.portable?void 0:this.stat.gid,size:this.stat.size,mtime:this.noMtime?void 0:this.mtime||this.stat.mtime,type:this.type==="Unsupported"?void 0:this.type,uname:this.portable?void 0:this.stat.uid===this.myuid?this.myuser:"",atime:this.portable?void 0:this.stat.atime,ctime:this.portable?void 0:this.stat.ctime}),this.header.encode()&&!this.noPax&&super.write(new ft({atime:this.portable?void 0:this.header.atime,ctime:this.portable?void 0:this.header.ctime,gid:this.portable?void 0:this.header.gid,mtime:this.noMtime?void 0:this.mtime||this.header.mtime,path:this[q](this.path),linkpath:this.type==="Link"&&this.linkpath!==void 0?this[q](this.linkpath):this.linkpath,size:this.header.size,uid:this.portable?void 0:this.header.uid,uname:this.portable?void 0:this.header.uname,dev:this.portable?void 0:this.stat.dev,ino:this.portable?void 0:this.stat.ino,nlink:this.portable?void 0:this.stat.nlink}).encode());let t=this.header?.block;if(!t)throw new Error("failed to encode header");super.write(t)}[ir](){if(!this.stat)throw new Error("cannot create directory entry without stat");this.path.slice(-1)!=="/"&&(this.path+="/"),this.stat.size=0,this[fe](),this.end()}[is](){X.readlink(this.absolute,(t,e)=>{if(t)return this.emit("error",t);this[ns](e)})}[ns](t){this.linkpath=f(t),this[fe](),this.end()}[sr](t){if(!this.stat)throw new Error("cannot create link entry without stat");this.type="Link",this.linkpath=f(js.relative(this.cwd,t)),this.stat.size=0,this[fe](),this.end()}[er](){if(!this.stat)throw new Error("cannot create file entry without stat");if(this.stat.nlink>1){let t=`${this.stat.dev}:${this.stat.ino}`,e=this.linkCache.get(t);if(e?.indexOf(this.cwd)===0)return this[sr](e);this.linkCache.set(t,this.absolute)}if(this[fe](),this.stat.size===0)return this.end();this[os5]()}[os5](){X.open(this.absolute,"r",(t,e)=>{if(t)return this.emit("error",t);this[hs](e)})}[hs](t){if(this.fd=t,this.#t)return this[pt]();if(!this.stat)throw new Error("should stat before calling onopenfile");this.blockLen=512*Math.ceil(this.stat.size/512),this.blockRemain=this.blockLen;let e=Math.min(this.blockLen,this.maxReadSize);this.buf=Buffer.allocUnsafe(e),this.offset=0,this.pos=0,this.remain=this.stat.size,this.length=this.buf.length,this[ii]()}[ii](){let{fd:t,buf:e,offset:i,length:r,pos:n}=this;if(t===void 0||e===void 0)throw new Error("cannot read file without first opening");X.read(t,e,i,r,n,(o,h)=>{if(o)return this[pt](()=>this.emit("error",o));this[rs](h)})}[pt](t=()=>{}){this.fd!==void 0&&X.close(this.fd,t)}[rs](t){if(t<=0&&this.remain>0){let r=Object.assign(new Error("encountered unexpected EOF"),{path:this.absolute,syscall:"read",code:"EOF"});return this[pt](()=>this.emit("error",r))}if(t>this.remain){let r=Object.assign(new Error("did not encounter expected EOF"),{path:this.absolute,syscall:"read",code:"EOF"});return this[pt](()=>this.emit("error",r))}if(!this.buf)throw new Error("should have created buffer prior to reading");if(t===this.remain)for(let r=t;r<this.length&&t<this.blockRemain;r++)this.buf[r+this.offset]=0,t++,this.remain++;let e=this.offset===0&&t===this.buf.length?this.buf:this.buf.subarray(this.offset,this.offset+t);this.write(e)?this[es]():this[as](()=>this[es]())}[as](t){this.once("drain",t)}write(t,e,i){if(typeof e=="function"&&(i=e,e=void 0),typeof t=="string"&&(t=Buffer.from(t,typeof e=="string"?e:"utf8")),this.blockRemain<t.length){let r=Object.assign(new Error("writing more data than expected"),{path:this.absolute});return this.emit("error",r)}return this.remain-=t.length,this.blockRemain-=t.length,this.pos+=t.length,this.offset+=t.length,super.write(t,null,i)}[es](){if(!this.remain)return this.blockRemain&&super.write(Buffer.alloc(this.blockRemain)),this[pt](t=>t?this.emit("error",t):this.end());if(!this.buf)throw new Error("buffer lost somehow in ONDRAIN");this.offset>=this.length&&(this.buf=Buffer.allocUnsafe(Math.min(this.blockRemain,this.buf.length)),this.offset=0),this.length=this.buf.length-this.offset,this[ii]()}};var ni=class extends de{sync=true;[ss](){this[si](X.lstatSync(this.absolute))}[is](){this[ns](X.readlinkSync(this.absolute))}[os5](){this[hs](X.openSync(this.absolute,"r"))}[ii](){let t=true;try{let{fd:e,buf:i,offset:r,length:n,pos:o}=this;if(e===void 0||i===void 0)throw new Error("fd and buf must be set in READ method");let h=X.readSync(e,i,r,n,o);this[rs](h),t=false}finally{if(t)try{this[pt](()=>{})}catch{}}}[as](t){t()}[pt](t=()=>{}){this.fd!==void 0&&X.closeSync(this.fd),t()}};var oi=class extends A{blockLen=0;blockRemain=0;buf=0;pos=0;remain=0;length=0;preservePaths;portable;strict;noPax;noMtime;readEntry;type;prefix;path;mode;uid;gid;uname;gname;header;mtime;atime;ctime;linkpath;size;onWriteEntry;warn(t,e,i={}){return Dt(this,t,e,i)}constructor(t,e={}){let i=se(e);super(),this.preservePaths=!!i.preservePaths,this.portable=!!i.portable,this.strict=!!i.strict,this.noPax=!!i.noPax,this.noMtime=!!i.noMtime,this.onWriteEntry=i.onWriteEntry,this.readEntry=t;let{type:r}=t;if(r==="Unsupported")throw new Error("writing entry that should be ignored");this.type=r,this.type==="Directory"&&this.portable&&(this.noMtime=true),this.prefix=i.prefix,this.path=f(t.path),this.mode=t.mode!==void 0?this[ri](t.mode):void 0,this.uid=this.portable?void 0:t.uid,this.gid=this.portable?void 0:t.gid,this.uname=this.portable?void 0:t.uname,this.gname=this.portable?void 0:t.gname,this.size=t.size,this.mtime=this.noMtime?void 0:i.mtime||t.mtime,this.atime=this.portable?void 0:t.atime,this.ctime=this.portable?void 0:t.ctime,this.linkpath=t.linkpath!==void 0?f(t.linkpath):void 0,typeof i.onwarn=="function"&&this.on("warn",i.onwarn);let n=false;if(!this.preservePaths){let[h,a]=ce(this.path);h&&typeof a=="string"&&(this.path=a,n=h)}this.remain=t.size,this.blockRemain=t.startBlockSize,this.onWriteEntry?.(this),this.header=new F({path:this[q](this.path),linkpath:this.type==="Link"&&this.linkpath!==void 0?this[q](this.linkpath):this.linkpath,mode:this.mode,uid:this.portable?void 0:this.uid,gid:this.portable?void 0:this.gid,size:this.size,mtime:this.noMtime?void 0:this.mtime,type:this.type,uname:this.portable?void 0:this.uname,atime:this.portable?void 0:this.atime,ctime:this.portable?void 0:this.ctime}),n&&this.warn("TAR_ENTRY_INFO",`stripping ${n} from absolute path`,{entry:this,path:n+this.path}),this.header.encode()&&!this.noPax&&super.write(new ft({atime:this.portable?void 0:this.atime,ctime:this.portable?void 0:this.ctime,gid:this.portable?void 0:this.gid,mtime:this.noMtime?void 0:this.mtime,path:this[q](this.path),linkpath:this.type==="Link"&&this.linkpath!==void 0?this[q](this.linkpath):this.linkpath,size:this.size,uid:this.portable?void 0:this.uid,uname:this.portable?void 0:this.uname,dev:this.portable?void 0:this.readEntry.dev,ino:this.portable?void 0:this.readEntry.ino,nlink:this.portable?void 0:this.readEntry.nlink}).encode());let o=this.header?.block;if(!o)throw new Error("failed to encode header");super.write(o),t.pipe(this)}[q](t){return rr(t,this.prefix)}[ri](t){return Ji(t,this.type==="Directory",this.portable)}write(t,e,i){typeof e=="function"&&(i=e,e=void 0),typeof t=="string"&&(t=Buffer.from(t,typeof e=="string"?e:"utf8"));let r=t.length;if(r>this.blockRemain)throw new Error("writing more to entry than is appropriate");return this.blockRemain-=r,super.write(t,i)}end(t,e,i){return this.blockRemain&&super.write(Buffer.alloc(this.blockRemain)),typeof t=="function"&&(i=t,e=void 0,t=void 0),typeof e=="function"&&(i=e,e=void 0),typeof t=="string"&&(t=Buffer.from(t,e??"utf8")),i&&this.once("finish",i),t?super.end(t,i):super.end(i),this}};var Gn=s3=>s3.isFile()?"File":s3.isDirectory()?"Directory":s3.isSymbolicLink()?"SymbolicLink":"Unsupported";var hi=class s2{tail;head;length=0;static create(t=[]){return new s2(t)}constructor(t=[]){for(let e of t)this.push(e)}*[Symbol.iterator](){for(let t=this.head;t;t=t.next)yield t.value}removeNode(t){if(t.list!==this)throw new Error("removing node which does not belong to this list");let e=t.next,i=t.prev;return e&&(e.prev=i),i&&(i.next=e),t===this.head&&(this.head=e),t===this.tail&&(this.tail=i),this.length--,t.next=void 0,t.prev=void 0,t.list=void 0,e}unshiftNode(t){if(t===this.head)return;t.list&&t.list.removeNode(t);let e=this.head;t.list=this,t.next=e,e&&(e.prev=t),this.head=t,this.tail||(this.tail=t),this.length++}pushNode(t){if(t===this.tail)return;t.list&&t.list.removeNode(t);let e=this.tail;t.list=this,t.prev=e,e&&(e.next=t),this.tail=t,this.head||(this.head=t),this.length++}push(...t){for(let e=0,i=t.length;e<i;e++)Yn(this,t[e]);return this.length}unshift(...t){for(var e=0,i=t.length;e<i;e++)Kn(this,t[e]);return this.length}pop(){if(!this.tail)return;let t=this.tail.value,e=this.tail;return this.tail=this.tail.prev,this.tail?this.tail.next=void 0:this.head=void 0,e.list=void 0,this.length--,t}shift(){if(!this.head)return;let t=this.head.value,e=this.head;return this.head=this.head.next,this.head?this.head.prev=void 0:this.tail=void 0,e.list=void 0,this.length--,t}forEach(t,e){e=e||this;for(let i=this.head,r=0;i;r++)t.call(e,i.value,r,this),i=i.next}forEachReverse(t,e){e=e||this;for(let i=this.tail,r=this.length-1;i;r--)t.call(e,i.value,r,this),i=i.prev}get(t){let e=0,i=this.head;for(;i&&e<t;e++)i=i.next;if(e===t&&i)return i.value}getReverse(t){let e=0,i=this.tail;for(;i&&e<t;e++)i=i.prev;if(e===t&&i)return i.value}map(t,e){e=e||this;let i=new s2;for(let r=this.head;r;)i.push(t.call(e,r.value,this)),r=r.next;return i}mapReverse(t,e){e=e||this;var i=new s2;for(let r=this.tail;r;)i.push(t.call(e,r.value,this)),r=r.prev;return i}reduce(t,e){let i,r=this.head;if(arguments.length>1)i=e;else if(this.head)r=this.head.next,i=this.head.value;else throw new TypeError("Reduce of empty list with no initial value");for(var n=0;r;n++)i=t(i,r.value,n),r=r.next;return i}reduceReverse(t,e){let i,r=this.tail;if(arguments.length>1)i=e;else if(this.tail)r=this.tail.prev,i=this.tail.value;else throw new TypeError("Reduce of empty list with no initial value");for(let n=this.length-1;r;n--)i=t(i,r.value,n),r=r.prev;return i}toArray(){let t=new Array(this.length);for(let e=0,i=this.head;i;e++)t[e]=i.value,i=i.next;return t}toArrayReverse(){let t=new Array(this.length);for(let e=0,i=this.tail;i;e++)t[e]=i.value,i=i.prev;return t}slice(t=0,e=this.length){e<0&&(e+=this.length),t<0&&(t+=this.length);let i=new s2;if(e<t||e<0)return i;t<0&&(t=0),e>this.length&&(e=this.length);let r=this.head,n=0;for(n=0;r&&n<t;n++)r=r.next;for(;r&&n<e;n++,r=r.next)i.push(r.value);return i}sliceReverse(t=0,e=this.length){e<0&&(e+=this.length),t<0&&(t+=this.length);let i=new s2;if(e<t||e<0)return i;t<0&&(t=0),e>this.length&&(e=this.length);let r=this.length,n=this.tail;for(;n&&r>e;r--)n=n.prev;for(;n&&r>t;r--,n=n.prev)i.push(n.value);return i}splice(t,e=0,...i){t>this.length&&(t=this.length-1),t<0&&(t=this.length+t);let r=this.head;for(let o=0;r&&o<t;o++)r=r.next;let n=[];for(let o=0;r&&o<e;o++)n.push(r.value),r=this.removeNode(r);r?r!==this.tail&&(r=r.prev):r=this.tail;for(let o of i)r=Zn(this,r,o);return n}reverse(){let t=this.head,e=this.tail;for(let i=t;i;i=i.prev){let r=i.prev;i.prev=i.next,i.next=r}return this.head=e,this.tail=t,this}};function Zn(s3,t,e){let i=t,r=t?t.next:s3.head,n=new ue(e,i,r,s3);return n.next===void 0&&(s3.tail=n),n.prev===void 0&&(s3.head=n),s3.length++,n}function Yn(s3,t){s3.tail=new ue(t,s3.tail,void 0,s3),s3.head||(s3.head=s3.tail),s3.length++}function Kn(s3,t){s3.head=new ue(t,void 0,s3.head,s3),s3.tail||(s3.tail=s3.head),s3.length++}var ue=class{list;next;prev;value;constructor(t,e,i,r){this.list=r,this.value=t,e?(e.next=this,this.prev=e):this.prev=void 0,i?(i.prev=this,this.next=i):this.next=void 0}};var pi=class{path;absolute;entry;stat;readdir;pending=false;pendingLink=false;ignore=false;piped=false;constructor(t,e){this.path=t||"./",this.absolute=e}};var nr=Buffer.alloc(1024);var li=Symbol("onStat");var me=Symbol("ended");var W=Symbol("queue");var pe=Symbol("pendingLinks");var Et=Symbol("current");var Ft=Symbol("process");var Ee=Symbol("processing");var ai=Symbol("processJob");var G=Symbol("jobs");var ls=Symbol("jobDone");var ci=Symbol("addFSEntry");var or=Symbol("addTarEntry");var ds=Symbol("stat");var us=Symbol("readdir");var fi=Symbol("onreaddir");var di=Symbol("pipe");var hr=Symbol("entry");var cs=Symbol("entryOpt");var ui=Symbol("writeEntryClass");var lr=Symbol("write");var fs7=Symbol("ondrain");var wt=class extends A{sync=false;opt;cwd;maxReadSize;preservePaths;strict;noPax;prefix;linkCache;statCache;file;portable;zip;readdirCache;noDirRecurse;follow;noMtime;mtime;filter;jobs;[ui];onWriteEntry;[W];[pe]=new Map;[G]=0;[Ee]=false;[me]=false;constructor(t={}){if(super(),this.opt=t,this.file=t.file||"",this.cwd=t.cwd||process.cwd(),this.maxReadSize=t.maxReadSize,this.preservePaths=!!t.preservePaths,this.strict=!!t.strict,this.noPax=!!t.noPax,this.prefix=f(t.prefix||""),this.linkCache=t.linkCache||new Map,this.statCache=t.statCache||new Map,this.readdirCache=t.readdirCache||new Map,this.onWriteEntry=t.onWriteEntry,this[ui]=de,typeof t.onwarn=="function"&&this.on("warn",t.onwarn),this.portable=!!t.portable,t.gzip||t.brotli||t.zstd){if((t.gzip?1:0)+(t.brotli?1:0)+(t.zstd?1:0)>1)throw new TypeError("gzip, brotli, zstd are mutually exclusive");if(t.gzip&&(typeof t.gzip!="object"&&(t.gzip={}),this.portable&&(t.gzip.portable=true),this.zip=new ze(t.gzip)),t.brotli&&(typeof t.brotli!="object"&&(t.brotli={}),this.zip=new We(t.brotli)),t.zstd&&(typeof t.zstd!="object"&&(t.zstd={}),this.zip=new Ye(t.zstd)),!this.zip)throw new Error("impossible");let e=this.zip;e.on("data",i=>super.write(i)),e.on("end",()=>super.end()),e.on("drain",()=>this[fs7]()),this.on("resume",()=>e.resume())}else this.on("drain",this[fs7]);this.noDirRecurse=!!t.noDirRecurse,this.follow=!!t.follow,this.noMtime=!!t.noMtime,t.mtime&&(this.mtime=t.mtime),this.filter=typeof t.filter=="function"?t.filter:()=>true,this[W]=new hi,this[G]=0,this.jobs=Number(t.jobs)||4,this[Ee]=false,this[me]=false}[lr](t){return super.write(t)}add(t){return this.write(t),this}end(t,e,i){return typeof t=="function"&&(i=t,t=void 0),typeof e=="function"&&(i=e,e=void 0),t&&this.add(t),this[me]=true,this[Ft](),i&&i(),this}write(t){if(this[me])throw new Error("write after end");return typeof t=="string"?this[ci](t):this[or](t),this.flowing}[or](t){let e=f(ar.resolve(this.cwd,t.path));if(!this.filter(t.path,t))t.resume();else{let i=new pi(t.path,e);i.entry=new oi(t,this[cs](i)),i.entry.on("end",()=>this[ls](i)),this[G]+=1,this[W].push(i)}this[Ft]()}[ci](t){let e=f(ar.resolve(this.cwd,t));this[W].push(new pi(t,e)),this[Ft]()}[ds](t){t.pending=true,this[G]+=1;let e=this.follow?"stat":"lstat";mi[e](t.absolute,(i,r)=>{t.pending=false,this[G]-=1,i?this.emit("error",i):this[li](t,r)})}[li](t,e){if(this.statCache.set(t.absolute,e),t.stat=e,!this.filter(t.path,e))t.ignore=true;else if(e.isFile()&&e.nlink>1&&!this.linkCache.get(`${e.dev}:${e.ino}`)&&!this.sync)if(t===this[Et])this[ai](t);else{let i=`${e.dev}:${e.ino}`,r=this[pe].get(i);r?r.push(t):this[pe].set(i,[t]),t.pendingLink=true,t.pending=true}this[Ft]()}[us](t){t.pending=true,this[G]+=1,mi.readdir(t.absolute,(e,i)=>{if(t.pending=false,this[G]-=1,e)return this.emit("error",e);this[fi](t,i)})}[fi](t,e){this.readdirCache.set(t.absolute,e),t.readdir=e,this[Ft]()}[Ft](){if(!this[Ee]){this[Ee]=true;for(let t=this[W].head;t&&this[G]<this.jobs;t=t.next)if(this[ai](t.value),t.value.ignore){let e=t.next;this[W].removeNode(t),t.next=e}this[Ee]=false,this[me]&&this[W].length===0&&this[G]===0&&(this.zip?this.zip.end(nr):(super.write(nr),super.end()))}}get[Et](){return this[W]&&this[W].head&&this[W].head.value}[ls](t){this[W].shift(),this[G]-=1;let{stat:e}=t;if(e&&e.isFile()&&e.nlink>1){let i=`${e.dev}:${e.ino}`,r=this[pe].get(i);if(r){this[pe].delete(i);for(let n of r)n.pending=false,this[ai](n)}}this[Ft]()}[ai](t){if(t.pending&&t.pendingLink&&t===this[Et]&&(t.pending=false,t.pendingLink=false),!t.pending){if(t.entry){t===this[Et]&&!t.piped&&this[di](t);return}if(!t.stat){let e=this.statCache.get(t.absolute);e?this[li](t,e):this[ds](t)}if(t.stat&&!t.ignore){if(!this.noDirRecurse&&t.stat.isDirectory()&&!t.readdir){let e=this.readdirCache.get(t.absolute);if(e?this[fi](t,e):this[us](t),!t.readdir)return}if(t.entry=this[hr](t),!t.entry){t.ignore=true;return}t===this[Et]&&!t.piped&&this[di](t)}}}[cs](t){return{onwarn:(e,i,r)=>this.warn(e,i,r),noPax:this.noPax,cwd:this.cwd,absolute:t.absolute,preservePaths:this.preservePaths,maxReadSize:this.maxReadSize,strict:this.strict,portable:this.portable,linkCache:this.linkCache,statCache:this.statCache,noMtime:this.noMtime,mtime:this.mtime,prefix:this.prefix,onWriteEntry:this.onWriteEntry}}[hr](t){this[G]+=1;try{return new this[ui](t.path,this[cs](t)).on("end",()=>this[ls](t)).on("error",i=>this.emit("error",i))}catch(e){this.emit("error",e)}}[fs7](){this[Et]&&this[Et].entry&&this[Et].entry.resume()}[di](t){t.piped=true,t.readdir&&t.readdir.forEach(r=>{let n=t.path,o=n==="./"?"":n.replace(/\/*$/,"/");this[ci](o+r)});let e=t.entry,i=this.zip;if(!e)throw new Error("cannot pipe without source");i?e.on("data",r=>{i.write(r)||e.pause()}):e.on("data",r=>{super.write(r)||e.pause()})}pause(){return this.zip&&this.zip.pause(),super.pause()}warn(t,e,i={}){Dt(this,t,e,i)}};var kt=class extends wt{sync=true;constructor(t){super(t),this[ui]=ni}pause(){}resume(){}[ds](t){let e=this.follow?"statSync":"lstatSync";this[li](t,mi[e](t.absolute))}[us](t){this[fi](t,mi.readdirSync(t.absolute))}[di](t){let e=t.entry,i=this.zip;if(t.readdir&&t.readdir.forEach(r=>{let n=t.path,o=n==="./"?"":n.replace(/\/*$/,"/");this[ci](o+r)}),!e)throw new Error("Cannot pipe without source");i?e.on("data",r=>{i.write(r)}):e.on("data",r=>{super[lr](r)})}};var Vn=(s3,t)=>{let e=new kt(s3),i=new Wt(s3.file,{mode:s3.mode||438});e.pipe(i),fr(e,t)};var $n=(s3,t)=>{let e=new wt(s3),i=new et(s3.file,{mode:s3.mode||438});e.pipe(i);let r=new Promise((n,o)=>{i.on("error",o),i.on("close",n),e.on("error",o)});return dr(e,t).catch(n=>e.emit("error",n)),r};var fr=(s3,t)=>{t.forEach(e=>{e.charAt(0)==="@"?Ct({file:cr.resolve(s3.cwd,e.slice(1)),sync:true,noResume:true,onReadEntry:i=>s3.add(i)}):s3.add(e)}),s3.end()};var dr=async(s3,t)=>{for(let e of t)e.charAt(0)==="@"?await Ct({file:cr.resolve(String(s3.cwd),e.slice(1)),noResume:true,onReadEntry:i=>{s3.add(i)}}):s3.add(e);s3.end()};var Xn=(s3,t)=>{let e=new kt(s3);return fr(e,t),e};var qn=(s3,t)=>{let e=new wt(s3);return dr(e,t).catch(i=>e.emit("error",i)),e};var Qn=K(Vn,$n,Xn,qn,(s3,t)=>{if(!t?.length)throw new TypeError("no paths specified to add to archive")});var Jn=process.env.__FAKE_PLATFORM__||process.platform;var Er=Jn==="win32";var{O_CREAT:wr,O_NOFOLLOW:ur,O_TRUNC:Sr,O_WRONLY:yr}=pr.constants;var Rr=Number(process.env.__FAKE_FS_O_FILENAME__)||pr.constants.UV_FS_O_FILEMAP||0;var jn=Er&&!!Rr;var to=512*1024;var eo=Rr|Sr|wr|yr;var mr=!Er&&typeof ur=="number"?ur|Sr|wr|yr:null;var ms=mr!==null?()=>mr:jn?s3=>s3<to?eo:"w":()=>"w";var ps=(s3,t,e)=>{try{return wi.lchownSync(s3,t,e)}catch(i){if(i?.code!=="ENOENT")throw i}};var Ei=(s3,t,e,i)=>{wi.lchown(s3,t,e,r=>{i(r&&r?.code!=="ENOENT"?r:null)})};var io=(s3,t,e,i,r)=>{if(t.isDirectory())Es(we.resolve(s3,t.name),e,i,n=>{if(n)return r(n);let o=we.resolve(s3,t.name);Ei(o,e,i,r)});else{let n=we.resolve(s3,t.name);Ei(n,e,i,r)}};var Es=(s3,t,e,i)=>{wi.readdir(s3,{withFileTypes:true},(r,n)=>{if(r){if(r.code==="ENOENT")return i();if(r.code!=="ENOTDIR"&&r.code!=="ENOTSUP")return i(r)}if(r||!n.length)return Ei(s3,t,e,i);let o=n.length,h=null,a=l3=>{if(!h){if(l3)return i(h=l3);if(--o===0)return Ei(s3,t,e,i)}};for(let l3 of n)io(s3,l3,t,e,a)})};var so=(s3,t,e,i)=>{t.isDirectory()&&ws(we.resolve(s3,t.name),e,i),ps(we.resolve(s3,t.name),e,i)};var ws=(s3,t,e)=>{let i;try{i=wi.readdirSync(s3,{withFileTypes:true})}catch(r){let n=r;if(n?.code==="ENOENT")return;if(n?.code==="ENOTDIR"||n?.code==="ENOTSUP")return ps(s3,t,e);throw n}for(let r of i)so(s3,r,t,e);return ps(s3,t,e)};var Se=class extends Error{path;code;syscall="chdir";constructor(t,e){super(`${e}: Cannot cd into '${t}'`),this.path=t,this.code=e}get name(){return"CwdError"}};var St=class extends Error{path;symlink;syscall="symlink";code="TAR_SYMLINK_ERROR";constructor(t,e){super("TAR_SYMLINK_ERROR: Cannot extract through symbolic link"),this.symlink=t,this.path=e}get name(){return"SymlinkError"}};var no=(s3,t)=>{k.stat(s3,(e,i)=>{(e||!i.isDirectory())&&(e=new Se(s3,e?.code||"ENOTDIR")),t(e)})};var gr=(s3,t,e)=>{s3=f(s3);let i=t.umask??18,r=t.mode|448,n=(r&i)!==0,o=t.uid,h=t.gid,a=typeof o=="number"&&typeof h=="number"&&(o!==t.processUid||h!==t.processGid),l3=t.preserve,c=t.unlink,d2=f(t.cwd),y2=(E2,x2)=>{E2?e(E2):x2&&a?Es(x2,o,h,Le2=>y2(Le2)):n?k.chmod(s3,r,e):e()};if(s3===d2)return no(s3,y2);if(l3)return ro.mkdir(s3,{mode:r,recursive:true}).then(E2=>y2(null,E2??void 0),y2);let D2=f(Si.relative(d2,s3)).split("/");Ss(d2,D2,r,c,d2,void 0,y2)};var Ss=(s3,t,e,i,r,n,o)=>{if(t.length===0)return o(null,n);let h=t.shift(),a=f(Si.resolve(s3+"/"+h));k.mkdir(a,e,br(a,t,e,i,r,n,o))};var br=(s3,t,e,i,r,n,o)=>h=>{h?k.lstat(s3,(a,l3)=>{if(a)a.path=a.path&&f(a.path),o(a);else if(l3.isDirectory())Ss(s3,t,e,i,r,n,o);else if(i)k.unlink(s3,c=>{if(c)return o(c);k.mkdir(s3,e,br(s3,t,e,i,r,n,o))});else{if(l3.isSymbolicLink())return o(new St(s3,s3+"/"+t.join("/")));o(h)}}):(n=n||s3,Ss(s3,t,e,i,r,n,o))};var oo=s3=>{let t=false,e;try{t=k.statSync(s3).isDirectory()}catch(i){e=i?.code}finally{if(!t)throw new Se(s3,e??"ENOTDIR")}};var _r=(s3,t)=>{s3=f(s3);let e=t.umask??18,i=t.mode|448,r=(i&e)!==0,n=t.uid,o=t.gid,h=typeof n=="number"&&typeof o=="number"&&(n!==t.processUid||o!==t.processGid),a=t.preserve,l3=t.unlink,c=f(t.cwd),d2=E2=>{E2&&h&&ws(E2,n,o),r&&k.chmodSync(s3,i)};if(s3===c)return oo(c),d2();if(a)return d2(k.mkdirSync(s3,{mode:i,recursive:true})??void 0);let T2=f(Si.relative(c,s3)).split("/"),D2;for(let E2=T2.shift(),x2=c;E2&&(x2+="/"+E2);E2=T2.shift()){x2=f(Si.resolve(x2));try{k.mkdirSync(x2,i),D2=D2||x2}catch{let Le2=k.lstatSync(x2);if(Le2.isDirectory())continue;if(l3){k.unlinkSync(x2),k.mkdirSync(x2,i),D2=D2||x2;continue}else if(Le2.isSymbolicLink())return new St(x2,x2+"/"+T2.join("/"))}}return d2(D2)};var ys=Object.create(null);var Or=1e4;var Vt=new Set;var Tr=s3=>{Vt.has(s3)?Vt.delete(s3):ys[s3]=s3.normalize("NFD").toLocaleLowerCase("en").toLocaleUpperCase("en"),Vt.add(s3);let t=ys[s3],e=Vt.size-Or;if(e>Or/10){for(let i of Vt)if(Vt.delete(i),delete ys[i],--e<=0)break}return t};var ho=process.env.TESTING_TAR_FAKE_PLATFORM||process.platform;var ao=ho==="win32";var lo=s3=>s3.split("/").slice(0,-1).reduce((e,i)=>{let r=e.at(-1);return r!==void 0&&(i=xr(r,i)),e.push(i||"/"),e},[]);var yi=class{#t=new Map;#i=new Map;#s=new Set;reserve(t,e){t=ao?["win32 parallelization disabled"]:t.map(r=>mt(xr(Tr(r))));let i=new Set(t.map(r=>lo(r)).reduce((r,n)=>r.concat(n)));this.#i.set(e,{dirs:i,paths:t});for(let r of t){let n=this.#t.get(r);n?n.push(e):this.#t.set(r,[e])}for(let r of i){let n=this.#t.get(r);if(!n)this.#t.set(r,[new Set([e])]);else{let o=n.at(-1);o instanceof Set?o.add(e):n.push(new Set([e]))}}return this.#r(e)}#n(t){let e=this.#i.get(t);if(!e)throw new Error("function does not have any path reservations");return{paths:e.paths.map(i=>this.#t.get(i)),dirs:[...e.dirs].map(i=>this.#t.get(i))}}check(t){let{paths:e,dirs:i}=this.#n(t);return e.every(r=>r&&r[0]===t)&&i.every(r=>r&&r[0]instanceof Set&&r[0].has(t))}#r(t){return this.#s.has(t)||!this.check(t)?false:(this.#s.add(t),t(()=>this.#e(t)),true)}#e(t){if(!this.#s.has(t))return false;let e=this.#i.get(t);if(!e)throw new Error("invalid reservation");let{paths:i,dirs:r}=e,n=new Set;for(let o of i){let h=this.#t.get(o);if(!h||h?.[0]!==t)continue;let a=h[1];if(!a){this.#t.delete(o);continue}if(h.shift(),typeof a=="function")n.add(a);else for(let l3 of a)n.add(l3)}for(let o of r){let h=this.#t.get(o),a=h?.[0];if(!(!h||!(a instanceof Set)))if(a.size===1&&h.length===1){this.#t.delete(o);continue}else if(a.size===1){h.shift();let l3=h[0];typeof l3=="function"&&n.add(l3)}else a.delete(t)}return this.#s.delete(t),n.forEach(o=>this.#r(o)),true}};var Lr=()=>process.umask();var Dr=Symbol("onEntry");var _s=Symbol("checkFs");var Nr=Symbol("checkFs2");var Os=Symbol("isReusable");var P=Symbol("makeFs");var Ts=Symbol("file");var xs=Symbol("directory");var gi=Symbol("link");var Ar=Symbol("symlink");var Ir=Symbol("hardlink");var Re=Symbol("ensureNoSymlink");var Cr=Symbol("unsupported");var Fr=Symbol("checkPath");var Rs=Symbol("stripAbsolutePath");var yt=Symbol("mkdir");var O=Symbol("onError");var Ri=Symbol("pending");var kr=Symbol("pend");var $t=Symbol("unpend");var gs=Symbol("ended");var bs=Symbol("maybeClose");var Ls=Symbol("skip");var ge=Symbol("doChown");var be=Symbol("uid");var _e=Symbol("gid");var Oe=Symbol("checkedCwd");var fo=process.env.TESTING_TAR_FAKE_PLATFORM||process.platform;var Te=fo==="win32";var uo=1024;var mo=(s3,t)=>{if(!Te)return u.unlink(s3,t);let e=s3+".DELETE."+Mr(16).toString("hex");u.rename(s3,e,i=>{if(i)return t(i);u.unlink(e,t)})};var po=s3=>{if(!Te)return u.unlinkSync(s3);let t=s3+".DELETE."+Mr(16).toString("hex");u.renameSync(s3,t),u.unlinkSync(t)};var vr=(s3,t,e)=>s3!==void 0&&s3===s3>>>0?s3:t!==void 0&&t===t>>>0?t:e;var Xt=class extends rt{[gs]=false;[Oe]=false;[Ri]=0;reservations=new yi;transform;writable=true;readable=false;uid;gid;setOwner;preserveOwner;processGid;processUid;maxDepth;forceChown;win32;newer;keep;noMtime;preservePaths;unlink;cwd;strip;processUmask;umask;dmode;fmode;chmod;constructor(t={}){if(t.ondone=()=>{this[gs]=true,this[bs]()},super(t),this.transform=t.transform,this.chmod=!!t.chmod,typeof t.uid=="number"||typeof t.gid=="number"){if(typeof t.uid!="number"||typeof t.gid!="number")throw new TypeError("cannot set owner without number uid and gid");if(t.preserveOwner)throw new TypeError("cannot preserve owner in archive and also set owner explicitly");this.uid=t.uid,this.gid=t.gid,this.setOwner=true}else this.uid=void 0,this.gid=void 0,this.setOwner=false;this.preserveOwner=t.preserveOwner===void 0&&typeof t.uid!="number"?process.getuid?.()===0:!!t.preserveOwner,this.processUid=(this.preserveOwner||this.setOwner)&&process.getuid?process.getuid():void 0,this.processGid=(this.preserveOwner||this.setOwner)&&process.getgid?process.getgid():void 0,this.maxDepth=typeof t.maxDepth=="number"?t.maxDepth:uo,this.forceChown=t.forceChown===true,this.win32=!!t.win32||Te,this.newer=!!t.newer,this.keep=!!t.keep,this.noMtime=!!t.noMtime,this.preservePaths=!!t.preservePaths,this.unlink=!!t.unlink,this.cwd=f(R.resolve(t.cwd||process.cwd())),this.strip=Number(t.strip)||0,this.processUmask=this.chmod?typeof t.processUmask=="number"?t.processUmask:Lr():0,this.umask=typeof t.umask=="number"?t.umask:this.processUmask,this.dmode=t.dmode||511&~this.umask,this.fmode=t.fmode||438&~this.umask,this.on("entry",e=>this[Dr](e))}warn(t,e,i={}){return(t==="TAR_BAD_ARCHIVE"||t==="TAR_ABORT")&&(i.recoverable=false),super.warn(t,e,i)}[bs](){this[gs]&&this[Ri]===0&&(this.emit("prefinish"),this.emit("finish"),this.emit("end"))}[Rs](t,e){let i=t[e],{type:r}=t;if(!i||this.preservePaths)return true;let[n,o]=ce(i),h=o.replaceAll(/\\/g,"/").split("/");if(h.includes("..")||Te&&/^[a-z]:\.\.$/i.test(h[0]??"")){if(e==="path"||r==="Link")return this.warn("TAR_ENTRY_ERROR",`${e} contains '..'`,{entry:t,[e]:i}),false;let a=R.posix.dirname(t.path),l3=R.posix.normalize(R.posix.join(a,h.join("/")));if(l3.startsWith("../")||l3==="..")return this.warn("TAR_ENTRY_ERROR",`${e} escapes extraction directory`,{entry:t,[e]:i}),false}return n&&(t[e]=String(o),this.warn("TAR_ENTRY_INFO",`stripping ${n} from absolute ${e}`,{entry:t,[e]:i})),true}[Fr](t){let e=f(t.path),i=e.split("/");if(this.strip){if(i.length<this.strip)return false;if(t.type==="Link"){let r=f(String(t.linkpath)).split("/");if(r.length>=this.strip)t.linkpath=r.slice(this.strip).join("/");else return false}i.splice(0,this.strip),t.path=i.join("/")}if(isFinite(this.maxDepth)&&i.length>this.maxDepth)return this.warn("TAR_ENTRY_ERROR","path excessively deep",{entry:t,path:e,depth:i.length,maxDepth:this.maxDepth}),false;if(!this[Rs](t,"path")||!this[Rs](t,"linkpath"))return false;if(t.absolute=R.isAbsolute(t.path)?f(R.resolve(t.path)):f(R.resolve(this.cwd,t.path)),!this.preservePaths&&typeof t.absolute=="string"&&t.absolute.indexOf(this.cwd+"/")!==0&&t.absolute!==this.cwd)return this.warn("TAR_ENTRY_ERROR","path escaped extraction target",{entry:t,path:f(t.path),resolvedPath:t.absolute,cwd:this.cwd}),false;if(t.absolute===this.cwd&&t.type!=="Directory"&&t.type!=="GNUDumpDir")return false;if(this.win32){let{root:r}=R.win32.parse(String(t.absolute));t.absolute=r+ts(String(t.absolute).slice(r.length));let{root:n}=R.win32.parse(t.path);t.path=n+ts(t.path.slice(n.length))}return true}[Dr](t){if(!this[Fr](t))return t.resume();switch(co.equal(typeof t.absolute,"string"),t.type){case"Directory":case"GNUDumpDir":t.mode&&(t.mode=t.mode|448);case"File":case"OldFile":case"ContiguousFile":case"Link":case"SymbolicLink":return this[_s](t);default:return this[Cr](t)}}[O](t,e){t.name==="CwdError"?this.emit("error",t):(this.warn("TAR_ENTRY_ERROR",t,{entry:e}),this[$t](),e.resume())}[yt](t,e,i){gr(f(t),{uid:this.uid,gid:this.gid,processUid:this.processUid,processGid:this.processGid,umask:this.processUmask,preserve:this.preservePaths,unlink:this.unlink,cwd:this.cwd,mode:e},i)}[ge](t){return this.forceChown||this.preserveOwner&&(typeof t.uid=="number"&&t.uid!==this.processUid||typeof t.gid=="number"&&t.gid!==this.processGid)||typeof this.uid=="number"&&this.uid!==this.processUid||typeof this.gid=="number"&&this.gid!==this.processGid}[be](t){return vr(this.uid,t.uid,this.processUid)}[_e](t){return vr(this.gid,t.gid,this.processGid)}[Ts](t,e){let i=typeof t.mode=="number"?t.mode&4095:this.fmode,r=new et(String(t.absolute),{flags:ms(t.size),mode:i,autoClose:false});r.on("error",a=>{r.fd&&u.close(r.fd,()=>{}),r.write=()=>true,this[O](a,t),e()});let n=1,o=a=>{if(a){r.fd&&u.close(r.fd,()=>{}),this[O](a,t),e();return}--n===0&&r.fd!==void 0&&u.close(r.fd,l3=>{l3?this[O](l3,t):this[$t](),e()})};r.on("finish",()=>{let a=String(t.absolute),l3=r.fd;if(typeof l3=="number"&&t.mtime&&!this.noMtime){n++;let c=t.atime||new Date,d2=t.mtime;u.futimes(l3,c,d2,y2=>y2?u.utimes(a,c,d2,T2=>o(T2&&y2)):o())}if(typeof l3=="number"&&this[ge](t)){n++;let c=this[be](t),d2=this[_e](t);typeof c=="number"&&typeof d2=="number"&&u.fchown(l3,c,d2,y2=>y2?u.chown(a,c,d2,T2=>o(T2&&y2)):o())}o()});let h=this.transform&&this.transform(t)||t;h!==t&&(h.on("error",a=>{this[O](a,t),e()}),t.pipe(h)),h.pipe(r)}[xs](t,e){let i=typeof t.mode=="number"?t.mode&4095:this.dmode;this[yt](String(t.absolute),i,r=>{if(r){this[O](r,t),e();return}let n=1,o=()=>{--n===0&&(e(),this[$t](),t.resume())};t.mtime&&!this.noMtime&&(n++,u.utimes(String(t.absolute),t.atime||new Date,t.mtime,o)),this[ge](t)&&(n++,u.chown(String(t.absolute),Number(this[be](t)),Number(this[_e](t)),o)),o()})}[Cr](t){t.unsupported=true,this.warn("TAR_ENTRY_UNSUPPORTED",`unsupported entry type: ${t.type}`,{entry:t}),t.resume()}[Ar](t,e){let i=f(R.relative(this.cwd,R.resolve(R.dirname(String(t.absolute)),String(t.linkpath)))).split("/");this[Re](t,this.cwd,i,()=>this[gi](t,String(t.linkpath),"symlink",e),r=>{this[O](r,t),e()})}[Ir](t,e){let i=f(R.resolve(this.cwd,String(t.linkpath))),r=f(String(t.linkpath)).split("/");this[Re](t,this.cwd,r,()=>this[gi](t,i,"link",e),n=>{this[O](n,t),e()})}[Re](t,e,i,r,n){let o=i.shift();if(this.preservePaths||o===void 0)return r();let h=R.resolve(e,o);u.lstat(h,(a,l3)=>{if(a)return r();if(l3?.isSymbolicLink())return n(new St(h,R.resolve(h,i.join("/"))));this[Re](t,h,i,r,n)})}[kr](){this[Ri]++}[$t](){this[Ri]--,this[bs]()}[Ls](t){this[$t](),t.resume()}[Os](t,e){return t.type==="File"&&!this.unlink&&e.isFile()&&e.nlink<=1&&!Te}[_s](t){this[kr]();let e=[t.path];t.linkpath&&e.push(t.linkpath),this.reservations.reserve(e,i=>this[Nr](t,i))}[Nr](t,e){let i=h=>{e(h)},r=()=>{this[yt](this.cwd,this.dmode,h=>{if(h){this[O](h,t),i();return}this[Oe]=true,n()})},n=()=>{if(t.absolute!==this.cwd){let h=f(R.dirname(String(t.absolute)));if(h!==this.cwd)return this[yt](h,this.dmode,a=>{if(a){this[O](a,t),i();return}o()})}o()},o=()=>{u.lstat(String(t.absolute),(h,a)=>{if(a&&(this.keep||this.newer&&a.mtime>(t.mtime??a.mtime))){this[Ls](t),i();return}if(h||this[Os](t,a))return this[P](null,t,i);if(a.isDirectory()){if(t.type==="Directory"){let l3=this.chmod&&t.mode&&(a.mode&4095)!==t.mode,c=d2=>this[P](d2??null,t,i);return l3?u.chmod(String(t.absolute),Number(t.mode),c):c()}if(t.absolute!==this.cwd)return u.rmdir(String(t.absolute),l3=>this[P](l3??null,t,i))}if(t.absolute===this.cwd)return this[P](null,t,i);mo(String(t.absolute),l3=>this[P](l3??null,t,i))})};this[Oe]?n():r()}[P](t,e,i){if(t){this[O](t,e),i();return}switch(e.type){case"File":case"OldFile":case"ContiguousFile":return this[Ts](e,i);case"Link":return this[Ir](e,i);case"SymbolicLink":return this[Ar](e,i);case"Directory":case"GNUDumpDir":return this[xs](e,i)}}[gi](t,e,i,r){u[i](e,String(t.absolute),n=>{n?this[O](n,t):(this[$t](),t.resume()),r()})}};var ye=s3=>{try{return[null,s3()]}catch(t){return[t,null]}};var xe=class extends Xt{sync=true;[P](t,e){return super[P](t,e,()=>{})}[_s](t){if(!this[Oe]){let n=this[yt](this.cwd,this.dmode);if(n)return this[O](n,t);this[Oe]=true}if(t.absolute!==this.cwd){let n=f(R.dirname(String(t.absolute)));if(n!==this.cwd){let o=this[yt](n,this.dmode);if(o)return this[O](o,t)}}let[e,i]=ye(()=>u.lstatSync(String(t.absolute)));if(i&&(this.keep||this.newer&&i.mtime>(t.mtime??i.mtime)))return this[Ls](t);if(e||this[Os](t,i))return this[P](null,t);if(i.isDirectory()){if(t.type==="Directory"){let o=this.chmod&&t.mode&&(i.mode&4095)!==t.mode,[h]=o?ye(()=>{u.chmodSync(String(t.absolute),Number(t.mode))}):[];return this[P](h,t)}let[n]=ye(()=>u.rmdirSync(String(t.absolute)));this[P](n,t)}let[r]=t.absolute===this.cwd?[]:ye(()=>po(String(t.absolute)));this[P](r,t)}[Ts](t,e){let i=typeof t.mode=="number"?t.mode&4095:this.fmode,r=h=>{let a;try{u.closeSync(n)}catch(l3){a=l3}(h||a)&&this[O](h||a,t),e()},n;try{n=u.openSync(String(t.absolute),ms(t.size),i)}catch(h){return r(h)}let o=this.transform&&this.transform(t)||t;o!==t&&(o.on("error",h=>this[O](h,t)),t.pipe(o)),o.on("data",h=>{try{u.writeSync(n,h,0,h.length)}catch(a){r(a)}}),o.on("end",()=>{let h=null;if(t.mtime&&!this.noMtime){let a=t.atime||new Date,l3=t.mtime;try{u.futimesSync(n,a,l3)}catch(c){try{u.utimesSync(String(t.absolute),a,l3)}catch{h=c}}}if(this[ge](t)){let a=this[be](t),l3=this[_e](t);try{u.fchownSync(n,Number(a),Number(l3))}catch(c){try{u.chownSync(String(t.absolute),Number(a),Number(l3))}catch{h=h||c}}}r(h)})}[xs](t,e){let i=typeof t.mode=="number"?t.mode&4095:this.dmode,r=this[yt](String(t.absolute),i);if(r){this[O](r,t),e();return}if(t.mtime&&!this.noMtime)try{u.utimesSync(String(t.absolute),t.atime||new Date,t.mtime)}catch{}if(this[ge](t))try{u.chownSync(String(t.absolute),Number(this[be](t)),Number(this[_e](t)))}catch{}e(),t.resume()}[yt](t,e){try{return _r(f(t),{uid:this.uid,gid:this.gid,processUid:this.processUid,processGid:this.processGid,umask:this.processUmask,preserve:this.preservePaths,unlink:this.unlink,cwd:this.cwd,mode:e})}catch(i){return i}}[Re](t,e,i,r,n){if(this.preservePaths||i.length===0)return r();let o=e;for(let h of i){o=R.resolve(o,h);let[a,l3]=ye(()=>u.lstatSync(o));if(a)return r();if(l3.isSymbolicLink())return n(new St(o,R.resolve(e,i.join("/"))))}r()}[gi](t,e,i,r){let n=`${i}Sync`;try{u[n](e,String(t.absolute)),r(),t.resume()}catch(o){return this[O](o,t)}}};var Eo=s3=>{let t=new xe(s3),e=s3.file,i=Br.statSync(e),r=s3.maxReadSize||16*1024*1024;new Be(e,{readSize:r,size:i.size}).pipe(t)};var wo=(s3,t)=>{let e=new Xt(s3),i=s3.maxReadSize||16*1024*1024,r=s3.file;return new Promise((o,h)=>{e.on("error",h),e.on("close",o),Br.stat(r,(a,l3)=>{if(a)h(a);else{let c=new _t(r,{readSize:i,size:l3.size});c.on("error",h),c.pipe(e)}})})};var So=K(Eo,wo,s3=>new xe(s3),s3=>new Xt(s3),(s3,t)=>{t?.length&&Qi(s3,t)});var yo=(s3,t)=>{let e=new kt(s3),i=true,r,n;try{try{r=v.openSync(s3.file,"r+")}catch(a){if(a?.code==="ENOENT")r=v.openSync(s3.file,"w+");else throw a}let o=v.fstatSync(r),h=Buffer.alloc(512);t:for(n=0;n<o.size;n+=512){for(let c=0,d2=0;c<512;c+=d2){if(d2=v.readSync(r,h,c,h.length-c,n+c),n===0&&h[0]===31&&h[1]===139)throw new Error("cannot append to compressed archives");if(!d2)break t}let a=new F(h);if(!a.cksumValid)break;let l3=512*Math.ceil((a.size||0)/512);if(n+l3+512>o.size)break;n+=l3,s3.mtimeCache&&a.mtime&&s3.mtimeCache.set(String(a.path),a.mtime)}i=false,Ro(s3,e,n,r,t)}finally{if(i)try{v.closeSync(r)}catch{}}};var Ro=(s3,t,e,i,r)=>{let n=new Wt(s3.file,{fd:i,start:e});t.pipe(n),bo(t,r)};var go=(s3,t)=>{t=Array.from(t);let e=new wt(s3),i=(n,o,h)=>{let a=(T2,D2)=>{T2?v.close(n,E2=>h(T2)):h(null,D2)},l3=0;if(o===0)return a(null,0);let c=0,d2=Buffer.alloc(512),y2=(T2,D2)=>{if(T2||D2===void 0)return a(T2);if(c+=D2,c<512&&D2)return v.read(n,d2,c,d2.length-c,l3+c,y2);if(l3===0&&d2[0]===31&&d2[1]===139)return a(new Error("cannot append to compressed archives"));if(c<512)return a(null,l3);let E2=new F(d2);if(!E2.cksumValid)return a(null,l3);let x2=512*Math.ceil((E2.size??0)/512);if(l3+x2+512>o||(l3+=x2+512,l3>=o))return a(null,l3);s3.mtimeCache&&E2.mtime&&s3.mtimeCache.set(String(E2.path),E2.mtime),c=0,v.read(n,d2,0,512,l3,y2)};v.read(n,d2,0,512,l3,y2)};return new Promise((n,o)=>{e.on("error",o);let h="r+",a=(l3,c)=>{if(l3&&l3.code==="ENOENT"&&h==="r+")return h="w+",v.open(s3.file,h,a);if(l3||!c)return o(l3);v.fstat(c,(d2,y2)=>{if(d2)return v.close(c,()=>o(d2));i(c,y2.size,(T2,D2)=>{if(T2)return o(T2);let E2=new et(s3.file,{fd:c,start:D2});e.pipe(E2),E2.on("error",o),E2.on("close",n),_o(e,t)})})};v.open(s3.file,h,a)})};var bo=(s3,t)=>{t.forEach(e=>{e.charAt(0)==="@"?Ct({file:Pr.resolve(s3.cwd,e.slice(1)),sync:true,noResume:true,onReadEntry:i=>s3.add(i)}):s3.add(e)}),s3.end()};var _o=async(s3,t)=>{for(let e of t)e.charAt(0)==="@"?await Ct({file:Pr.resolve(String(s3.cwd),e.slice(1)),noResume:true,onReadEntry:i=>s3.add(i)}):s3.add(e);s3.end()};var vt=K(yo,go,()=>{throw new TypeError("file is required")},()=>{throw new TypeError("file is required")},(s3,t)=>{if(!Bs(s3))throw new TypeError("file is required");if(s3.gzip||s3.brotli||s3.zstd||s3.file.endsWith(".br")||s3.file.endsWith(".tbr"))throw new TypeError("cannot append to compressed archives");if(!t?.length)throw new TypeError("no paths specified to add/replace")});var Oo=K(vt.syncFile,vt.asyncFile,vt.syncNoFile,vt.asyncNoFile,(s3,t=[])=>{vt.validate?.(s3,t),To(s3)});var To=s3=>{let t=s3.filter;s3.mtimeCache||(s3.mtimeCache=new Map),s3.filter=t?(e,i)=>t(e,i)&&!((s3.mtimeCache?.get(e)??i.mtime??0)>(i.mtime??0)):(e,i)=>!((s3.mtimeCache?.get(e)??i.mtime??0)>(i.mtime??0))};import path13 from"path";import os6 from"os";import{fileURLToPath as fileURLToPath2}from"url";init_logger();import fs8 from"fs";import path11 from"path";var PKG_ESCAPED=DSH_PACKAGE.replace(/[.*+?^${}()|[\]\\]/g,"\\$&");var PKG_ENTRY_RE=new RegExp(`^([ \\t]+)${PKG_ESCAPED}:([ \\t]*(\\S+))?[ \\t]*$`);import{readFile,writeFile,mkdir,rename,unlink}from"fs/promises";import path12 from"path";init_logger();var STAGGER_MIN_DELAY_DEFAULT_MS=15*6e4;var STAGGER_MAX_DELAY_DEFAULT_MS=48*36e5;var POLICY_STALE_CAP_MS=30*864e5;var DELAY_SANITY_CAP_MS=366*864e5;var PUBLISHED_VERSIONS_TTL_MS=10*6e4;var STAGGER_PRUNE_MS=7*864e5;function normalizeRegistryBase(raw){const v3=raw?.trim();if(!v3)return"https://registry.npmjs.org";return v3.replace(/\/+$/,"")}var REGISTRY_BASE=normalizeRegistryBase(updateRegistryBase());var CHECK_INTERVAL_MS=updateCheckIntervalMs();var THROTTLE_FILE=path13.join(cacheDir(),".update-check");var OWNER_THROTTLE_FILE=path13.join(cacheDir(),".owner-update-check");var LOCK_FILE=path13.join(cacheDir(),".update-lock");var OWNER_LANE_CHECK_BASE_MS=10*60*1e3;var OWNER_LANE_CHECK_JITTER_MS=5*60*1e3;var LOCK_MAX_AGE_MS=30*60*1e3;var UPDATE_TMP_MAX_AGE_MS=60*60*1e3;var BACKOFF_BASE_MS=5*60*1e3;var BACKOFF_CAP_MS=6*60*60*1e3;var BACKOFF_STATE_FILE=path13.join(cacheDir(),".install-backoff.json");var BACKOFF_PRUNE_MS=7*24*60*60*1e3;var LAST_INSTALL_FILE=path13.join(cacheDir(),".last-install.json");function isVersionNewer(latest,current){const next=parseSemVer(latest);const prev=parseSemVer(current);if(!next||!prev)return false;for(let i=0;i<3;i++){const a=next.parts[i]??0;const b3=prev.parts[i]??0;if(a!==b3)return a>b3}if(!next.pre.length&&prev.pre.length)return true;if(next.pre.length&&!prev.pre.length)return false;for(let i=0;i<Math.max(next.pre.length,prev.pre.length);i++){const a=next.pre[i];const b3=prev.pre[i];if(a===void 0)return false;if(b3===void 0)return true;if(a===b3)continue;const aNumber=/^\d+$/.test(a)?Number(a):void 0;const bNumber=/^\d+$/.test(b3)?Number(b3):void 0;if(aNumber!==void 0&&bNumber!==void 0)return aNumber>bNumber;if(aNumber!==void 0)return false;if(bNumber!==void 0)return true;return a>b3}return false}function parseSemVer(version){const match=version.match(/^v?(\d+)\.(\d+)\.(\d+)(?:-([0-9A-Za-z.-]+))?(?:\+.+)?$/);if(!match)return void 0;return{parts:[Number(match[1]),Number(match[2]),Number(match[3])],pre:match[4]?.split(".")??[]}}var PI_LANE_HINT=`run \`pi update --extension ${PI_NPM_SPEC}\` from a shell where \`pi\` resolves (or point BILI_PI_BIN at pi's executable)`;import fs9 from"fs";import path15 from"path";import path14 from"path";import{fileURLToPath as fileURLToPath3}from"url";function nativeProxyScriptPath(fromUrl=import.meta.url){return path14.resolve(path14.dirname(fileURLToPath3(fromUrl)),"..","index.js")}function nativeBootstrapGate(env,optOutKey){if(env.BILLION_CONTEXT_PLUGIN==="0")return false;if(env[optOutKey]==="0")return false;if(env.BILLION_CONTEXT_PROXY!==void 0&&env.BILLION_CONTEXT_PROXY.trim().length>0)return false;if(env.BILI_PROVIDER_REWRITES!==void 0)return false;return true}function proxyEnvOrigin(env){const raw=env.BILLION_CONTEXT_PROXY;if(raw===void 0)return void 0;const url=raw.trim();if(url.length===0||!/^https?:\/\//i.test(url))return void 0;try{new URL(url)}catch{return void 0}return url.replace(/\/+$/,"")}function nativeAttachOrigin(env){const raw=env.BILLION_CONTEXT_ATTACH;if(raw===void 0)return void 0;const url=raw.trim();if(url.length===0||!/^https?:\/\//i.test(url))return void 0;try{new URL(url)}catch{return void 0}return url.replace(/\/+$/,"")}function envMillis(env,name,fallback){const raw=env[name];if(raw===void 0)return fallback;const n=Number(raw);return Number.isFinite(n)&&n>0?Math.floor(n):fallback}var OMP_FIRST_EVENT_TIMEOUT_ENV="PI_OPENAI_STREAM_FIRST_EVENT_TIMEOUT_MS";var OMP_FIRST_EVENT_TIMEOUT_DEFAULT_MS=18e5;function ompFirstEventTimeoutValue(env){const raw=env[OMP_FIRST_EVENT_TIMEOUT_ENV];if(raw!==void 0&&raw.trim().length>0)return void 0;return String(OMP_FIRST_EVENT_TIMEOUT_DEFAULT_MS)}function applyOmpFirstEventTimeout(env){const value=ompFirstEventTimeoutValue(env);if(value!==void 0)env[OMP_FIRST_EVENT_TIMEOUT_ENV]=value}function markNativeHost(env,host){if(env.BILLION_CONTEXT_NATIVE===void 0||env.BILLION_CONTEXT_NATIVE.length===0){env.BILLION_CONTEXT_NATIVE=host}}function singleFlight(fn){let inFlight;return()=>{if(inFlight===void 0){inFlight=fn().finally(()=>{inFlight=void 0})}return inFlight}}var originWaiter;function setNativeOriginWaiter(waiter){originWaiter=waiter}async function awaitNativeProxyOrigin(){return originWaiter===void 0?void 0:originWaiter.wait()}function parseToolOutcome(value){return value==="applied"||value==="partial"||value==="refused"||value==="success"||value==="failure"?value:void 0}function parseBlocksCreated(value){return typeof value==="number"&&Number.isInteger(value)&&value>=0?value:void 0}function partialOutcomeNote(blocksCreated){const created=blocksCreated!==void 0?`${blocksCreated} block(s) created; `:"";return`[acp-result: PARTIAL \u2014 ${created}some requested range(s) were NOT folded. Retry ONLY the failed range(s) listed above; do not re-fold the ranges that were applied.]`}var MANIFEST_TIMEOUT_MS=5e3;var TOOL_TIMEOUT_MS=6e4;var TOOL_TIMEOUT_OVERHEAD_MARGIN_MS=3e4;var STATUS_TIMEOUT_MS=5e3;var ATTACH_HEALTH_DEADLINE_MS=15e3;var ATTACH_HEALTH_POLL_MS=250;function asciiHeaderValue(value){return/^[\x21-\x7e]{1,256}$/.test(value)?value:void 0}function proxyBaseFromUrl(baseUrl){if(!baseUrl)return void 0;try{const url=new URL(baseUrl);if(url.protocol!=="http:"&&url.protocol!=="https:")return void 0;const segments=url.pathname.split("/").filter(s3=>s3.length>0);if(segments[0]!=="bili")return void 0;const rest=url.pathname.slice(url.pathname.indexOf("bili")+"bili".length);if(!/^\/(?:responses\/)?https?:\/\//.test(rest))return void 0;return`${url.protocol}//${url.host}`}catch{return void 0}}function proxyBaseFromEnv(){const raw=process.env.BILLION_CONTEXT_PROXY?.trim();if(!raw)return void 0;try{const url=new URL(raw);return url.protocol==="http:"||url.protocol==="https:"?`${url.protocol}//${url.host}`:void 0}catch{return void 0}}function detectProxyBase(baseUrl){if(process.env.BILLION_CONTEXT_PLUGIN==="0")return void 0;return proxyBaseFromUrl(baseUrl)??proxyBaseFromEnv()}function mitmHostsFromEnv(env=process.env){const out=new Set;for(const raw of env.BILI_MITM_HOSTS?.split(",")??[]){const host=raw.trim().toLowerCase();if(host.length>0)out.add(host)}return out}function nonHttpProvidersFromEnv(env=process.env){const out=new Set;for(const raw of env.BILI_NON_HTTP_PROVIDERS?.split(",")??[]){const id=raw.trim();if(id.length>0)out.add(id)}return out}function destinationRoutedThroughProxy(baseUrl){if(!baseUrl)return false;const viaBiliPath=proxyBaseFromUrl(baseUrl)!==void 0;if(viaBiliPath)return true;let origin;let host;try{const url=new URL(baseUrl);if(url.protocol!=="http:"&&url.protocol!=="https:")return false;origin=`${url.protocol}//${url.host}`;host=url.hostname.toLowerCase()}catch{return false}if(origin===proxyBaseFromEnv())return true;const mitmHosts=mitmHostsFromEnv();if(mitmHosts.size===0)return false;for(const d2 of mitmHosts){if(host===d2||host.endsWith(`.${d2}`))return true}return false}async function fetchJson(url,init,timeoutMs,externalSignal){const ac=new AbortController;if(externalSignal?.aborted)ac.abort();const timer2=setTimeout(()=>ac.abort(),timeoutMs);const onExternalAbort=()=>ac.abort();externalSignal?.addEventListener("abort",onExternalAbort,{once:true});try{let res;try{res=await fetch(url,{...init,signal:ac.signal})}catch(err){if(ac.signal.aborted&&!externalSignal?.aborted)throw new Error(`timeout after ${timeoutMs}ms: ${url}`);throw err}const text=await res.text();let json=void 0;try{json=JSON.parse(text)}catch{json=void 0}return{ok:res.ok,status:res.status,json}}finally{clearTimeout(timer2);externalSignal?.removeEventListener("abort",onExternalAbort)}}var manifestToolDurations=new Map;function recordManifestToolDuration(proxyBase,json){const caps=json?.capabilities?.externalSummary;const value=caps?.maxToolDurationMs;if(typeof value==="number"&&Number.isFinite(value)&&value>0)manifestToolDurations.set(proxyBase,value)}function effectiveToolTimeoutMs(proxyBase,tool){if(tool!=="compress")return TOOL_TIMEOUT_MS;const advertised=manifestToolDurations.get(proxyBase);if(advertised===void 0)return TOOL_TIMEOUT_MS;return Math.max(TOOL_TIMEOUT_MS,advertised+TOOL_TIMEOUT_OVERHEAD_MARGIN_MS)}async function fetchManifest(proxyBase,format2="anthropic"){const{ok,status,json}=await fetchJson(`${proxyBase}/__bili/plugin/manifest`,void 0,MANIFEST_TIMEOUT_MS);if(!ok||!json||typeof json!=="object")throw new Error(`manifest fetch failed: ${status}`);recordManifestToolDuration(proxyBase,json);if(format2==="openai"){const data2=json;const tools2=[];for(const t of data2.tools?.openai??[]){const name=t.name??t.function?.name;if(typeof name!=="string"||name.length===0)continue;tools2.push({name,description:t.description??t.function?.description,inputSchema:t.parameters??t.function?.parameters??{type:"object",properties:{}}})}if(tools2.length===0)throw new Error("manifest served no openai tools");return tools2}const data=json;const tools=(data.tools?.anthropic??[]).filter(t=>typeof t.name==="string");if(tools.length===0)throw new Error("manifest served no anthropic tools");return tools.map(t=>({name:t.name,description:t.description,inputSchema:t.input_schema??{type:"object",properties:{}}}))}var COMPACT_TIMEOUT_MS=5e3;async function postIdentityRegister(proxyBase,conversationId,agent,parentConversationId){const res=await fetch(`${proxyBase}/__bili/plugin/register`,{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({conversationId,agent,identity:true,...parentConversationId?{parentConversationId}:{}}),signal:AbortSignal.timeout(COMPACT_TIMEOUT_MS)});if(!res.ok)throw new Error(`register HTTP ${res.status}`)}async function reportRuntimeInfo(proxyBase,info){const{ok,status}=await fetchJson(`${proxyBase}/__bili/plugin/runtime-info`,{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify(info)},STATUS_TIMEOUT_MS);if(!ok)throw new Error(`runtime-info report failed (${status})`)}var lastRuntimeReport=new Map;function runtimeReportFingerprint(proxyBase,info){return[proxyBase,info.agent,info.conversationId??"",info.model,String(info.contextWindow??""),String(info.maxOutput??""),info.baseURL??""].join("\0")}async function reportRuntimeInfoOnChange(proxyBase,info){if(proxyBase===void 0||proxyBase.length===0)return;const key=`${info.agent}\0${info.conversationId??""}`;const fingerprint=runtimeReportFingerprint(proxyBase,info);if(lastRuntimeReport.get(key)===fingerprint)return;lastRuntimeReport.set(key,fingerprint);try{await reportRuntimeInfo(proxyBase,info)}catch{lastRuntimeReport.delete(key)}}async function forwardTool(proxyBase,conversationId,tool,args,signal,nativeCaller=false){const body={conversationId,tool,args:args??{}};if(nativeCaller&&conversationId)body.nativeCaller=true;const{ok,status,json}=await fetchJson(`${proxyBase}/__bili/plugin/tool`,{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify(body)},effectiveToolTimeoutMs(proxyBase,tool),signal);const data=json;if(!ok||!data?.ok){throw new Error(`bili proxy tool ${tool} failed (${status}): ${data?.error??"unknown error"}`)}const outcome=parseToolOutcome(data.outcome);const blocksCreated=parseBlocksCreated(data.blocksCreated);let text=data.result??"";if(outcome==="partial")text+=`
|
|
128
128
|
${partialOutcomeNote(blocksCreated)}`;const out={text,failed:outcome==="failure"||outcome==="refused"};if(outcome!==void 0)out.outcome=outcome;if(blocksCreated!==void 0)out.blocksCreated=blocksCreated;return out}async function fetchStatus(proxyBase,conversationId){const{ok,json}=await fetchJson(`${proxyBase}/__bili/plugin/status?conversationId=${encodeURIComponent(conversationId)}`,void 0,STATUS_TIMEOUT_MS);if(!ok||!json||typeof json!=="object")return void 0;return json}async function fetchProxyVersion(proxyBase){const{ok,json}=await fetchJson(`${proxyBase}/__bili/plugin/manifest`,void 0,STATUS_TIMEOUT_MS);if(!ok||!json||typeof json!=="object")return void 0;const m3=json;const version=m3.version;if(typeof version!=="string"||version.length===0)return void 0;const commit=m3.commit;if(typeof commit==="string"&&commit.length>0)return`${version} (${commit})`;return version}async function waitForProxyVersion(proxyBase){const limit=envMillis(process.env,"BILI_ATTACH_HEALTH_DEADLINE_MS",ATTACH_HEALTH_DEADLINE_MS);const startedAt=Date.now();for(;;){const version=await fetchProxyVersion(proxyBase).catch(()=>void 0);if(version!==void 0)return proxyBase;const elapsed=Date.now()-startedAt;if(elapsed>=limit)return void 0;await new Promise(r=>setTimeout(r,Math.min(ATTACH_HEALTH_POLL_MS,limit-elapsed)))}}function armedIdleNotice(version){return`billion-context@${version} \u2014 proxy connected, compression armed. No model request yet; send one, then run /acp again.`}function noSessionWarning(){return"bili: no ACP session yet (send a model request first, then run /acp)"}import fs10 from"fs";import path16 from"path";import crypto3 from"crypto";import fs11 from"fs";import path17 from"path";init_log_mask();import{appendFileSync,mkdirSync as mkdirSync3}from"fs";import path19 from"path";init_version();function logHostEvent(level,origin,msg){try{const file=defaultLogFile();mkdirSync3(path19.dirname(file),{recursive:true});const safe=maskUrlsForDiagnostics(maskIpsInText(redactSecretsInText(msg)));appendFileSync(file,`${new Date().toISOString()} [${level}] [v=${VERSION}] ${origin?`${origin} `:""}${safe}
|
|
129
129
|
`)}catch{}}init_logger();init_version();import{readFile as readFile3,writeFile as writeFile3,mkdir as mkdir3}from"fs/promises";import{existsSync as existsSync2,statSync as statSync3}from"fs";import path20 from"path";init_logger();var registry_snapshot_default={fetchedAt:"2026-09-26T13:43:04.017Z",count:428,models:{"bytedance-seed/seed-2.0-pro":{id:"bytedance-seed/seed-2.0-pro",name:"Seed 2.0 Pro",description:"Flagship ByteDance Seed 2.0 model for complex multimodal reasoning and long-horizon agent workflows",family:"seed",attachment:true,reasoning:true,tool_call:true,structured_output:true,temperature:true,release_date:"2026-02-14",last_updated:"2026-02-14",modalities:{input:["text","image","video"],output:["text"]},open_weights:false,limit:{context:256e3,output:128e3}},"bytedance-seed/seed-2.1-pro":{id:"bytedance-seed/seed-2.1-pro",name:"Seed 2.1 Pro",description:"Flagship ByteDance Seed 2.1 model for complex multimodal reasoning, coding, and agents",family:"seed",attachment:true,reasoning:true,tool_call:true,structured_output:true,temperature:true,release_date:"2026-06-23",last_updated:"2026-06-23",modalities:{input:["text","image","video"],output:["text"]},open_weights:false,limit:{context:256e3,output:256e3}},"bytedance-seed/seed-2.1-turbo":{id:"bytedance-seed/seed-2.1-turbo",name:"Seed 2.1 Turbo",description:"Faster ByteDance Seed 2.1 model for multimodal reasoning and latency-sensitive agent workflows",family:"seed",attachment:true,reasoning:true,tool_call:true,structured_output:true,temperature:true,release_date:"2026-06-23",last_updated:"2026-06-23",modalities:{input:["text","image","video"],output:["text"]},open_weights:false,limit:{context:256e3,output:256e3}},"bytedance-seed/seed-evolving":{id:"bytedance-seed/seed-evolving",name:"Seed Evolving",description:"Rolling ByteDance Seed model for rapidly updated reasoning, coding, and agent capabilities",family:"seed",attachment:true,reasoning:true,tool_call:true,structured_output:true,temperature:true,release_date:"2026-06-23",last_updated:"2026-06-23",modalities:{input:["text","image","video"],output:["text"]},open_weights:false,limit:{context:256e3,output:256e3}},"bytedance-seed/seed-2.0-lite":{id:"bytedance-seed/seed-2.0-lite",name:"Seed 2.0 Lite",description:"Cost-efficient ByteDance Seed 2.0 model for production chat, analysis, and structured generation",family:"seed",attachment:true,reasoning:true,tool_call:true,structured_output:true,temperature:true,release_date:"2026-02-14",last_updated:"2026-02-14",modalities:{input:["text","image","video"],output:["text"]},open_weights:false,limit:{context:256e3,output:32e3}},"bytedance-seed/seed-1-6-flash":{id:"bytedance-seed/seed-1-6-flash",name:"Seed 1.6 Flash",description:"Low-latency ByteDance Seed model for high-throughput chat, extraction, and lightweight tool use",family:"seed",attachment:true,reasoning:false,tool_call:true,structured_output:true,temperature:true,release_date:"2025-08-28",last_updated:"2025-08-28",modalities:{input:["text","image"],output:["text"]},open_weights:false,limit:{context:256e3,output:32e3}},"bytedance-seed/seed-1-8":{id:"bytedance-seed/seed-1-8",name:"Seed 1.8",description:"ByteDance Seed model for multimodal reasoning, long-context analysis, and agent workflows",family:"seed",attachment:true,reasoning:true,tool_call:true,structured_output:true,temperature:true,release_date:"2025-12-28",last_updated:"2025-12-28",modalities:{input:["text","image"],output:["text"]},open_weights:false,limit:{context:256e3,output:64e3}},"bytedance-seed/seed-1-6":{id:"bytedance-seed/seed-1-6",name:"Seed 1.6",description:"ByteDance Seed model for long-context reasoning, instruction following, and tool-assisted tasks",family:"seed",attachment:false,reasoning:true,tool_call:true,structured_output:true,temperature:true,release_date:"2025-10-15",last_updated:"2025-10-15",modalities:{input:["text"],output:["text"]},open_weights:false,limit:{context:256e3,output:64e3}},"bytedance-seed/seed-1-6-vision":{id:"bytedance-seed/seed-1-6-vision",name:"Seed 1.6 Vision",description:"ByteDance Seed multimodal model for image understanding, visual reasoning, and tool-assisted tasks",family:"seed",attachment:true,reasoning:false,tool_call:true,structured_output:true,temperature:true,release_date:"2025-08-15",last_updated:"2025-08-15",modalities:{input:["text","image"],output:["text"]},open_weights:false,limit:{context:256e3,output:32e3}},"bytedance-seed/seed-2.0-mini":{id:"bytedance-seed/seed-2.0-mini",name:"Seed 2.0 Mini",description:"Lightweight ByteDance Seed 2.0 model for low-latency multimodal reasoning and high-volume tasks",family:"seed",attachment:true,reasoning:true,tool_call:true,structured_output:true,temperature:true,release_date:"2026-02-14",last_updated:"2026-02-14",modalities:{input:["text","image","video"],output:["text"]},open_weights:false,limit:{context:256e3,output:32e3}},"bytedance-seed/seed-character":{id:"bytedance-seed/seed-character",name:"Seed Character",description:"ByteDance Seed model optimized for character-driven dialogue and consistent conversational behavior",family:"seed",attachment:true,reasoning:true,tool_call:true,structured_output:true,temperature:true,release_date:"2026-06-23",last_updated:"2026-06-23",modalities:{input:["text","image","video"],output:["text"]},open_weights:false,limit:{context:256e3,output:256e3}},"bytedance-seed/seed-2.0-code":{id:"bytedance-seed/seed-2.0-code",name:"Seed 2.0 Code",description:"ByteDance Seed coding model for multimodal software engineering and long-running agents",family:"seed",attachment:true,reasoning:true,tool_call:true,structured_output:true,temperature:true,release_date:"2026-02-14",last_updated:"2026-02-14",modalities:{input:["text","image","video"],output:["text"]},open_weights:false,limit:{context:262144,output:131072}},"swiss-ai/apertus-8b":{id:"swiss-ai/apertus-8b",name:"Apertus 8B",description:"Fully open 8B multilingual LLM supporting 1800+ languages with 65K context. Trained on compliant open data. Apache 2.0, EU AI Act compliant.",attachment:false,reasoning:false,tool_call:true,temperature:true,knowledge:"2025-09",release_date:"2025-09-02",last_updated:"2025-09-02",modalities:{input:["text"],output:["text"]},open_weights:true,limit:{context:65536,output:8192},license:"Apache-2.0",links:[{label:"Paper",url:"https://arxiv.org/abs/2509.14233",type:"paper"}],weights:[{label:"Hugging Face",url:"https://huggingface.co/swiss-ai/Apertus-8B-Instruct-2509"}]},"swiss-ai/apertus-70b":{id:"swiss-ai/apertus-70b",name:"Apertus 70B",description:"Fully open 70B multilingual LLM supporting 1800+ languages with 65K context. Trained on 15T tokens of compliant open data. Apache 2.0, EU AI Act compliant.",attachment:false,reasoning:false,tool_call:true,temperature:true,knowledge:"2025-09",release_date:"2025-09-02",last_updated:"2025-09-02",modalities:{input:["text"],output:["text"]},open_weights:true,limit:{context:65536,output:8192},license:"Apache-2.0",links:[{label:"Paper",url:"https://arxiv.org/abs/2509.14233",type:"paper"}],weights:[{label:"Hugging Face",url:"https://huggingface.co/swiss-ai/Apertus-70B-Instruct-2509"}]},"poolside/laguna-xs.2":{id:"poolside/laguna-xs.2",name:"Laguna XS.2",description:"Agentic coding model from Poolside in the XS size class for local deployment",family:"laguna",attachment:false,reasoning:true,tool_call:true,structured_output:false,temperature:true,release_date:"2026-04-28",last_updated:"2026-06-13",modalities:{input:["text"],output:["text"]},open_weights:true,limit:{context:262144,output:32768}},"poolside/laguna-s-2.1":{id:"poolside/laguna-s-2.1",name:"Laguna S 2.1",description:"Agentic coding model from Poolside in the XS size class for local deployment",family:"laguna",attachment:false,reasoning:true,tool_call:true,structured_output:false,temperature:true,release_date:"2026-07-21",last_updated:"2026-07-21",modalities:{input:["text"],output:["text"]},open_weights:true,limit:{context:1048576,output:32768}},"poolside/laguna-xs-2.1":{id:"poolside/laguna-xs-2.1",name:"Laguna XS 2.1",description:"Agentic coding model from Poolside in the XS size class for local deployment",family:"laguna",attachment:false,reasoning:true,tool_call:true,structured_output:false,temperature:true,release_date:"2026-07-02",last_updated:"2026-07-02",modalities:{input:["text"],output:["text"]},open_weights:true,limit:{context:262144,output:32768},benchmarks:[{name:"SWE-Bench Verified",score:70.9,metric:"resolved",harness:"Harbor",source:"https://poolside.ai/blog/introducing-laguna-xs-2-1",date:"2026-07-02"},{name:"SWE-Bench Multilingual",score:63.1,metric:"resolve rate",harness:"Harbor",source:"https://poolside.ai/blog/introducing-laguna-xs-2-1",date:"2026-07-02"},{name:"SWE-Bench Pro",score:47.6,metric:"resolve rate",harness:"Harbor",source:"https://poolside.ai/blog/introducing-laguna-xs-2-1",date:"2026-07-02"},{name:"Terminal-Bench",score:37.5,metric:"success rate",harness:"Harbor",version:"2.0",source:"https://poolside.ai/blog/introducing-laguna-xs-2-1",date:"2026-07-02"}]},"poolside/laguna-m.1":{id:"poolside/laguna-m.1",name:"Laguna M.1",description:"Poolside's open-weight model for agentic coding and long-horizon work",family:"laguna",attachment:false,reasoning:true,tool_call:true,structured_output:false,temperature:true,release_date:"2026-04-28",last_updated:"2026-06-13",modalities:{input:["text"],output:["text"]},open_weights:true,limit:{context:262144,output:32768}},"anthropic/claude-haiku-4-5":{id:"anthropic/claude-haiku-4-5",name:"Claude Haiku 4.5 (latest)",description:"Fast Claude lane for lightweight agents, office tasks, and responsive chat",family:"claude-haiku",attachment:true,reasoning:true,tool_call:true,temperature:true,knowledge:"2025-02-28",release_date:"2025-10-15",last_updated:"2025-10-15",modalities:{input:["text","image","pdf"],output:["text"]},open_weights:false,limit:{context:2e5,output:64e3},benchmarks:[{name:"SWE-Bench Pro",score:39.45,metric:"resolve rate",dataset:"public",source:"https://labs.scale.com/leaderboard/swe_bench_pro_public"}]},"anthropic/claude-opus-4-0":{id:"anthropic/claude-opus-4-0",name:"Claude Opus 4 (latest)",description:"Flagship Claude model for deep reasoning, coding, and long-horizon agents",family:"claude-opus",attachment:true,reasoning:true,tool_call:true,temperature:true,knowledge:"2025-03-31",release_date:"2025-05-22",last_updated:"2025-05-22",modalities:{input:["text","image","pdf"],output:["text"]},open_weights:false,limit:{context:2e5,output:32e3},benchmarks:[{name:"Aider Polyglot",score:72,metric:"percent correct",source:"https://aider.chat/docs/leaderboards/",date:"2025-05-25"}]},"anthropic/claude-3-7-sonnet-20250219":{id:"anthropic/claude-3-7-sonnet-20250219",name:"Claude Sonnet 3.7",description:"Balanced Claude model for coding, analysis, agent workflows, and cost control",family:"claude-sonnet",attachment:true,reasoning:true,tool_call:true,temperature:true,knowledge:"2024-10-31",release_date:"2025-02-19",last_updated:"2025-02-19",modalities:{input:["text","image","pdf"],output:["text"]},open_weights:false,limit:{context:2e5,output:64e3},benchmarks:[{name:"Aider Polyglot",score:64.9,metric:"percent correct",source:"https://aider.chat/docs/leaderboards/",date:"2025-02-24"}]},"anthropic/claude-opus-4-5":{id:"anthropic/claude-opus-4-5",name:"Claude Opus 4.5 (latest)",description:"Flagship Claude model for deep reasoning, coding, and long-horizon agents",family:"claude-opus",attachment:true,reasoning:true,tool_call:true,temperature:true,knowledge:"2025-05",release_date:"2025-11-24",last_updated:"2025-11-24",modalities:{input:["text","image","pdf"],output:["text"]},open_weights:false,limit:{context:2e5,output:64e3}},"anthropic/claude-3-5-sonnet-20241022":{id:"anthropic/claude-3-5-sonnet-20241022",name:"Claude Sonnet 3.5 v2",description:"Balanced Claude model for coding, analysis, agent workflows, and cost control",family:"claude-sonnet",attachment:true,reasoning:false,tool_call:true,temperature:true,knowledge:"2024-04-30",release_date:"2024-10-22",last_updated:"2024-10-22",modalities:{input:["text","image","pdf"],output:["text"]},open_weights:false,limit:{context:2e5,output:8192},benchmarks:[{name:"Aider Polyglot",score:51.6,metric:"percent correct",source:"https://aider.chat/docs/leaderboards/",date:"2025-01-17"}]},"anthropic/claude-sonnet-4-5":{id:"anthropic/claude-sonnet-4-5",name:"Claude Sonnet 4.5 (latest)",description:"Balanced Claude model for coding, analysis, agent workflows, and cost control",family:"claude-sonnet",attachment:true,reasoning:true,tool_call:true,temperature:true,knowledge:"2025-07-31",release_date:"2025-09-29",last_updated:"2025-09-29",modalities:{input:["text","image","pdf"],output:["text"]},open_weights:false,limit:{context:2e5,output:64e3},benchmarks:[{name:"SWE-Bench Pro",score:43.6,metric:"resolve rate",dataset:"public",source:"https://labs.scale.com/leaderboard/swe_bench_pro_public"}]},"anthropic/claude-opus-5-5":{id:"anthropic/claude-opus-5-5",name:"Claude Opus 5.5",description:"Claude model for long-running agentic coding and knowledge work",family:"claude-opus",attachment:true,reasoning:true,tool_call:true,temperature:false,knowledge:"2026-06",release_date:"2026-09-22",last_updated:"2026-09-22",modalities:{input:["text","image","pdf"],output:["text"]},open_weights:false,limit:{context:1e6,output:128e3},benchmarks:[{name:"Terminal-Bench",score:66.4,metric:"score",variant:"xhigh effort; production safeguards with fallback",version:"4.0",source:"https://www.anthropic.com/claude-opus-5-5",date:"2026-09-22"},{name:"FrontierCode",score:54.4,metric:"score",variant:"max effort; production safeguards with fallback",dataset:"Main",version:"1.1",source:"https://www.anthropic.com/claude-opus-5-5",date:"2026-09-22"},{name:"CursorBench",score:57.8,metric:"score",variant:"max effort; production safeguards with fallback",version:"4.0",source:"https://www.anthropic.com/claude-opus-5-5",date:"2026-09-22"},{name:"GDPval-AA",score:1846,metric:"Elo",variant:"max effort; production safeguards with fallback",version:"2.1",source:"https://www.anthropic.com/claude-opus-5-5",date:"2026-09-22"},{name:"AutomationBench",score:40,metric:"pass rate",variant:"max effort; production safeguards; no fallback",source:"https://www.anthropic.com/claude-opus-5-5",date:"2026-09-22"},{name:"Humanity's Last Exam",score:67.7,metric:"score",variant:"max effort; with tools; production safeguards with fallback",source:"https://www.anthropic.com/claude-opus-5-5",date:"2026-09-22"},{name:"Terminal-Bench-Science",score:58.7,metric:"score",variant:"max effort; production safeguards with fallback",version:"0.1",source:"https://www.anthropic.com/claude-opus-5-5",date:"2026-09-22"},{name:"OSWorld",score:81.8,metric:"partial score",variant:"max effort; production safeguards with fallback",version:"2.0",source:"https://www.anthropic.com/claude-opus-5-5",date:"2026-09-22"},{name:"Chartography",score:89,metric:"score",variant:"max effort; with tools; production safeguards with fallback",source:"https://www.anthropic.com/claude-opus-5-5",date:"2026-09-22"}]},"anthropic/claude-opus-4-20250514":{id:"anthropic/claude-opus-4-20250514",name:"Claude Opus 4",description:"Flagship Claude model for deep reasoning, coding, and long-horizon agents",family:"claude-opus",attachment:true,reasoning:true,tool_call:true,temperature:true,knowledge:"2025-03-31",release_date:"2025-05-22",last_updated:"2025-05-22",modalities:{input:["text","image","pdf"],output:["text"]},open_weights:false,limit:{context:2e5,output:32e3},benchmarks:[{name:"Aider Polyglot",score:72,metric:"percent correct",source:"https://aider.chat/docs/leaderboards/",date:"2025-05-25"}]},"anthropic/claude-fable-5-1":{id:"anthropic/claude-fable-5-1",name:"Claude Fable 5.1",description:"Claude model for demanding reasoning and long-horizon agentic work",family:"claude-fable",attachment:true,reasoning:true,tool_call:true,temperature:false,knowledge:"2026-06",release_date:"2026-09-01",last_updated:"2026-09-01",modalities:{input:["text","image","pdf"],output:["text"]},open_weights:false,limit:{context:1e6,output:128e3},benchmarks:[{name:"Terminal-Bench-Science",score:52.6,metric:"score",variant:"production safeguards with fallback",version:"0.1",source:"https://www.anthropic.com/claude-fable-and-mythos-5-1",date:"2026-09-01"},{name:"Terminal-Bench",score:55.8,metric:"score",variant:"production safeguards with fallback",version:"4.0",source:"https://www.anthropic.com/claude-fable-and-mythos-5-1",date:"2026-09-01"},{name:"GDPval-AA",score:1853,metric:"Elo",variant:"production safeguards with fallback",version:"2",source:"https://www.anthropic.com/claude-fable-and-mythos-5-1",date:"2026-09-01"},{name:"OSWorld",score:77.9,metric:"partial score",variant:"production safeguards; interventions score zero; no fallback",dataset:"August 2026 task release",version:"2.0",source:"https://www.anthropic.com/claude-fable-and-mythos-5-1",date:"2026-09-01"},{name:"OSWorld",score:41.7,metric:"strict success rate",variant:"production safeguards; interventions score zero; no fallback",dataset:"August 2026 task release",version:"2.0",source:"https://www.anthropic.com/claude-fable-and-mythos-5-1",date:"2026-09-01"},{name:"Humanity's Last Exam",score:60.9,metric:"score",variant:"without tools; production safeguards with fallback",source:"https://www.anthropic.com/claude-fable-and-mythos-5-1",date:"2026-09-01"},{name:"Humanity's Last Exam",score:65,metric:"score",variant:"with tools; production safeguards with fallback",source:"https://www.anthropic.com/claude-fable-and-mythos-5-1",date:"2026-09-01"},{name:"AutomationBench",score:31.4,metric:"pass rate",variant:"production safeguards with fallback",source:"https://www.anthropic.com/claude-fable-and-mythos-5-1",date:"2026-09-01"},{name:"CursorBench",score:73.4,metric:"score",variant:"max effort; production safeguards with fallback",version:"3.2.0",source:"https://www.anthropic.com/claude-fable-and-mythos-5-1",date:"2026-09-01"}]},"anthropic/claude-mythos-5":{id:"anthropic/claude-mythos-5",name:"Claude Mythos 5",description:"Restricted Claude model for advanced cybersecurity and biology research workflows",family:"claude-mythos",attachment:true,reasoning:true,tool_call:true,structured_output:true,temperature:false,knowledge:"2026-01-31",release_date:"2026-06-09",last_updated:"2026-06-09",modalities:{input:["text","image","pdf"],output:["text"]},open_weights:false,limit:{context:1e6,output:128e3}},"anthropic/claude-opus-4-1-20250805":{id:"anthropic/claude-opus-4-1-20250805",name:"Claude Opus 4.1",description:"Flagship Claude model for deep reasoning, coding, and long-horizon agents",family:"claude-opus",attachment:true,reasoning:true,tool_call:true,temperature:true,knowledge:"2025-03-31",release_date:"2025-08-05",last_updated:"2025-08-05",modalities:{input:["text","image","pdf"],output:["text"]},open_weights:false,limit:{context:2e5,output:32e3}},"anthropic/claude-opus-4-5-20251101":{id:"anthropic/claude-opus-4-5-20251101",name:"Claude Opus 4.5",description:"Flagship Claude model for deep reasoning, coding, and long-horizon agents",family:"claude-opus",attachment:true,reasoning:true,tool_call:true,temperature:true,knowledge:"2025-05",release_date:"2025-11-01",last_updated:"2025-11-01",modalities:{input:["text","image","pdf"],output:["text"]},open_weights:false,limit:{context:2e5,output:64e3},benchmarks:[{name:"SWE-Bench Pro",score:45.89,metric:"resolve rate",dataset:"public",source:"https://labs.scale.com/leaderboard/swe_bench_pro_public"}]},"anthropic/claude-opus-4-1":{id:"anthropic/claude-opus-4-1",name:"Claude Opus 4.1 (latest)",description:"Flagship Claude model for deep reasoning, coding, and long-horizon agents",family:"claude-opus",attachment:true,reasoning:true,tool_call:true,temperature:true,knowledge:"2025-03-31",release_date:"2025-08-05",last_updated:"2025-08-05",modalities:{input:["text","image","pdf"],output:["text"]},open_weights:false,limit:{context:2e5,output:32e3}},"anthropic/claude-sonnet-4-0":{id:"anthropic/claude-sonnet-4-0",name:"Claude Sonnet 4 (latest)",description:"Balanced Claude model for coding, analysis, agent workflows, and cost control",family:"claude-sonnet",attachment:true,reasoning:true,tool_call:true,temperature:true,knowledge:"2025-03-31",release_date:"2025-05-22",last_updated:"2025-05-22",modalities:{input:["text","image","pdf"],output:["text"]},open_weights:false,limit:{context:2e5,output:64e3},benchmarks:[{name:"Aider Polyglot",score:61.3,metric:"percent correct",source:"https://aider.chat/docs/leaderboards/",date:"2025-05-24"},{name:"SWE-Bench Pro",score:42.7,metric:"resolve rate",dataset:"public",source:"https://labs.scale.com/leaderboard/swe_bench_pro_public"}]},"anthropic/claude-opus-5":{id:"anthropic/claude-opus-5",name:"Claude Opus 5",description:"Strongest Claude Opus model for coding, agents, and professional work",family:"claude-opus",attachment:true,reasoning:true,tool_call:true,temperature:false,knowledge:"2026-05",release_date:"2026-07-24",last_updated:"2026-07-24",modalities:{input:["text","image","pdf"],output:["text"]},open_weights:false,limit:{context:1e6,output:128e3},benchmarks:[{name:"SWE-Bench Verified",score:96,metric:"resolved",source:"https://www.anthropic.com/claude-opus-5-system-card",date:"2026-07-24"},{name:"SWE-Bench Pro",score:79.2,metric:"resolve rate",source:"https://www.anthropic.com/claude-opus-5-system-card",date:"2026-07-24"},{name:"SWE-Bench Multilingual",score:89.5,metric:"resolve rate",source:"https://www.anthropic.com/claude-opus-5-system-card",date:"2026-07-24"},{name:"SWE-Bench Multimodal",score:59.4,metric:"resolve rate",source:"https://www.anthropic.com/claude-opus-5-system-card",date:"2026-07-24"},{name:"DeepSWE",score:68.8,metric:"resolve rate",version:"1.1",source:"https://www.anthropic.com/claude-opus-5-system-card",date:"2026-07-24"},{name:"FrontierCode",score:53.4,metric:"mean@5",variant:"medium effort",dataset:"Main",version:"1.1",source:"https://www.anthropic.com/claude-opus-5-system-card",date:"2026-07-24"},{name:"Frontier-Bench",score:43.3,metric:"mean reward",harness:"mini-SWE-agent",variant:"max effort",version:"v0.1",source:"https://www.anthropic.com/claude-opus-5-system-card",date:"2026-07-24"},{name:"BrowseComp",score:90.8,metric:"accuracy",variant:"single agent",source:"https://www.anthropic.com/claude-opus-5-system-card",date:"2026-07-24"},{name:"Humanity's Last Exam",score:56.3,metric:"accuracy",variant:"no tools",source:"https://www.anthropic.com/claude-opus-5-system-card",date:"2026-07-24"},{name:"Humanity's Last Exam",score:64.7,metric:"accuracy",variant:"with tools",source:"https://www.anthropic.com/claude-opus-5-system-card",date:"2026-07-24"},{name:"DeepSearchQA",score:95,metric:"F1",variant:"max effort",source:"https://www.anthropic.com/news/claude-opus-5",date:"2026-07-24"},{name:"OSWorld",score:70.6,metric:"success rate",version:"2.0",source:"https://www.anthropic.com/claude-opus-5-system-card",date:"2026-07-24"},{name:"GDPval-AA",score:1861,metric:"Elo",variant:"max effort",version:"v2",source:"https://www.anthropic.com/claude-opus-5-system-card",date:"2026-07-24"},{name:"AA-Briefcase",score:1720,metric:"Elo",variant:"max effort",source:"https://www.anthropic.com/claude-opus-5-system-card",date:"2026-07-24"},{name:"AutomationBench",score:26,metric:"success rate",variant:"max effort",source:"https://www.anthropic.com/claude-opus-5-system-card",date:"2026-07-24"},{name:"ARC-AGI-1",score:97.5,metric:"accuracy",variant:"max effort",source:"https://www.anthropic.com/claude-opus-5-system-card",date:"2026-07-24"},{name:"ARC-AGI-2",score:90.4,metric:"accuracy",variant:"max effort",source:"https://www.anthropic.com/claude-opus-5-system-card",date:"2026-07-24"},{name:"ARC-AGI-3",score:30.2,metric:"RHAE",variant:"high effort",source:"https://www.anthropic.com/claude-opus-5-system-card",date:"2026-07-24"},{name:"HealthBench Professional",score:59.8,metric:"score",variant:"max effort",source:"https://www.anthropic.com/claude-opus-5-system-card",date:"2026-07-24"}]},"anthropic/claude-fable-5":{id:"anthropic/claude-fable-5",name:"Claude Fable 5",description:"Claude model for creative writing, analysis, and controlled agent workflows",family:"claude-fable",attachment:true,reasoning:true,tool_call:true,temperature:false,knowledge:"2026-01-31",release_date:"2026-06-09",last_updated:"2026-06-09",modalities:{input:["text","image","pdf"],output:["text"]},open_weights:false,limit:{context:1e6,output:128e3},benchmarks:[{name:"SWE-Bench Pro",score:80.3,metric:"resolve rate",source:"https://www.anthropic.com/news/claude-fable-5-mythos-5",date:"2026-06-09"},{name:"SWE-Bench Verified",score:95,metric:"resolved",source:"https://benchlm.ai/benchmarks/sweVerified"},{name:"Terminal-Bench",score:88,metric:"success rate",version:"2.1",source:"https://www.anthropic.com/news/claude-fable-5-mythos-5",date:"2026-06-09"},{name:"Humanity's Last Exam",score:59,metric:"accuracy",variant:"no tools",source:"https://www.anthropic.com/news/claude-fable-5-mythos-5",date:"2026-06-09"},{name:"Humanity's Last Exam",score:64.5,metric:"accuracy",variant:"with tools",source:"https://www.anthropic.com/news/claude-fable-5-mythos-5",date:"2026-06-09"},{name:"OSWorld-Verified",score:85,metric:"success rate",source:"https://www.anthropic.com/news/claude-fable-5-mythos-5",date:"2026-06-09"},{name:"FrontierCode",score:29.3,metric:"pass rate",variant:"high effort",dataset:"Diamond",source:"https://www.anthropic.com/news/claude-fable-5-mythos-5",date:"2026-06-09"},{name:"GDPval-AA",score:1932,metric:"Elo",source:"https://www.anthropic.com/news/claude-fable-5-mythos-5",date:"2026-06-09"},{name:"AutomationBench",score:17.4,metric:"success rate",source:"https://www.anthropic.com/news/claude-fable-5-mythos-5",date:"2026-06-09"}]},"anthropic/claude-opus-4-8":{id:"anthropic/claude-opus-4-8",name:"Claude Opus 4.8",description:"Top Claude Opus tier for the hardest reasoning, coding, and long-horizon agents",family:"claude-opus",attachment:true,reasoning:true,tool_call:true,temperature:false,knowledge:"2026-01",release_date:"2026-05-28",last_updated:"2026-05-28",modalities:{input:["text","image","pdf"],output:["text"]},open_weights:false,limit:{context:1e6,output:128e3},benchmarks:[{name:"SWE-Bench Pro",score:69.2,metric:"resolve rate",source:"https://www.anthropic.com/news/claude-opus-4-8",date:"2026-05-28"},{name:"Terminal-Bench",score:74.6,metric:"success rate",harness:"Terminus-2",version:"2.1",source:"https://www.anthropic.com/news/claude-opus-4-8",date:"2026-05-28"},{name:"SWE-Bench Verified",score:88.6,metric:"resolved",source:"https://benchlm.ai/benchmarks/sweVerified"},{name:"Humanity's Last Exam",score:49.8,metric:"accuracy",variant:"no tools",source:"https://www.anthropic.com/news/claude-fable-5-mythos-5",date:"2026-06-09"},{name:"Humanity's Last Exam",score:57.9,metric:"accuracy",variant:"with tools",source:"https://www.anthropic.com/news/claude-fable-5-mythos-5",date:"2026-06-09"},{name:"OSWorld-Verified",score:83.4,metric:"success rate",source:"https://www.anthropic.com/news/claude-fable-5-mythos-5",date:"2026-06-09"},{name:"FrontierCode",score:13.4,metric:"pass rate",variant:"high effort",dataset:"Diamond",source:"https://www.anthropic.com/news/claude-fable-5-mythos-5",date:"2026-06-09"}]},"anthropic/claude-sonnet-4-5-20250929":{id:"anthropic/claude-sonnet-4-5-20250929",name:"Claude Sonnet 4.5",description:"Balanced Claude model for coding, analysis, agent workflows, and cost control",family:"claude-sonnet",attachment:true,reasoning:true,tool_call:true,temperature:true,knowledge:"2025-07-31",release_date:"2025-09-29",last_updated:"2025-09-29",modalities:{input:["text","image","pdf"],output:["text"]},open_weights:false,limit:{context:2e5,output:64e3}},"anthropic/claude-sonnet-5":{id:"anthropic/claude-sonnet-5",name:"Claude Sonnet 5",description:"Everyday Claude agent model for coding, planning, browsing, and general work",family:"claude-sonnet",attachment:true,reasoning:true,tool_call:true,temperature:false,knowledge:"2026-01-31",release_date:"2026-06-30",last_updated:"2026-06-30",modalities:{input:["text","image","pdf"],output:["text"]},open_weights:false,limit:{context:1e6,output:128e3},benchmarks:[{name:"SWE-Bench Verified",score:85.2,metric:"resolved",source:"https://www.anthropic.com/news/claude-sonnet-5",date:"2026-06-30"},{name:"SWE-Bench Pro",score:63.2,metric:"resolve rate",source:"https://www.anthropic.com/news/claude-sonnet-5",date:"2026-06-30"},{name:"SWE-Bench Multilingual",score:78.3,metric:"resolve rate",source:"https://www.anthropic.com/news/claude-sonnet-5",date:"2026-06-30"},{name:"Terminal-Bench",score:80.4,metric:"success rate",harness:"Terminus-2",version:"2.1",source:"https://www.anthropic.com/news/claude-sonnet-5",date:"2026-06-30"},{name:"OSWorld-Verified",score:81.2,metric:"success rate",source:"https://www.anthropic.com/news/claude-sonnet-5",date:"2026-06-30"},{name:"BrowseComp",score:84.7,metric:"accuracy",variant:"single agent",source:"https://www.anthropic.com/news/claude-sonnet-5",date:"2026-06-30"},{name:"FrontierCode",score:38.8,metric:"pass rate",version:"v1",source:"https://www.anthropic.com/news/claude-sonnet-5",date:"2026-06-30"}]},"anthropic/claude-opus-4-6":{id:"anthropic/claude-opus-4-6",name:"Claude Opus 4.6",description:"High-end Claude for difficult coding, planning, and slower expert reasoning",family:"claude-opus",attachment:true,reasoning:true,tool_call:true,temperature:true,knowledge:"2025-05-31",release_date:"2026-02-05",last_updated:"2026-03-13",modalities:{input:["text","image","pdf"],output:["text"]},open_weights:false,limit:{context:1e6,output:128e3},benchmarks:[{name:"SWE-Bench Pro",score:51.9,metric:"resolve rate",dataset:"public",source:"https://labs.scale.com/leaderboard/swe_bench_pro_public"},{name:"SWE-Atlas Codebase QnA",score:33.3,metric:"score",harness:"Claude Code",source:"https://labs.scale.com/leaderboard/sweatlas-qna"},{name:"SWE-Atlas Codebase QnA",score:30,metric:"score",harness:"Mini-SWE-Agent",source:"https://labs.scale.com/leaderboard/sweatlas-qna"},{name:"SWE-Atlas Refactoring",score:35.58,metric:"score",harness:"Claude Code",source:"https://labs.scale.com/leaderboard/sweatlas-refactoring"},{name:"SWE-Atlas Test Writing",score:36.67,metric:"score",harness:"Claude Code",source:"https://labs.scale.com/leaderboard/sweatlas-tw"},{name:"SWE-Atlas Test Writing",score:36.08,metric:"score",harness:"Mini-SWE-Agent",source:"https://labs.scale.com/leaderboard/sweatlas-tw"},{name:"Artificial Analysis Coding Agent Index",score:51.3,metric:"average pass@1",harness:"Claude Code",variant:"medium",source:"https://artificialanalysis.ai/agents/coding-agents"},{name:"SWE-Atlas Codebase QnA",score:71.9,metric:"pass@1",harness:"Claude Code",variant:"medium",source:"https://artificialanalysis.ai/agents/coding-agents"},{name:"SWE-Bench Pro",score:11.8,metric:"pass@1",harness:"Claude Code",variant:"medium",dataset:"hard-aa",source:"https://artificialanalysis.ai/agents/coding-agents"},{name:"Terminal-Bench",score:70.2,metric:"pass@1",harness:"Claude Code",variant:"medium",version:"2.1",source:"https://artificialanalysis.ai/agents/coding-agents"}]},"anthropic/claude-haiku-4-5-20251001":{id:"anthropic/claude-haiku-4-5-20251001",name:"Claude Haiku 4.5",description:"Fast Claude model for responsive assistance, classification, and lightweight agents",family:"claude-haiku",attachment:true,reasoning:true,tool_call:true,temperature:true,knowledge:"2025-02-28",release_date:"2025-10-15",last_updated:"2025-10-15",modalities:{input:["text","image","pdf"],output:["text"]},open_weights:false,limit:{context:2e5,output:64e3}},"anthropic/claude-sonnet-4-6":{id:"anthropic/claude-sonnet-4-6",name:"Claude Sonnet 4.6",description:"Claude workhorse for coding agents, careful analysis, and production cost control",family:"claude-sonnet",attachment:true,reasoning:true,tool_call:true,temperature:true,knowledge:"2025-08-31",release_date:"2026-02-17",last_updated:"2026-03-13",modalities:{input:["text","image","pdf"],output:["text"]},open_weights:false,limit:{context:1e6,output:64e3},benchmarks:[{name:"SWE-Atlas Codebase QnA",score:31.2,metric:"score",harness:"Claude Code",source:"https://labs.scale.com/leaderboard/sweatlas-qna"},{name:"SWE-Atlas Refactoring",score:32.21,metric:"score",harness:"Claude Code",source:"https://labs.scale.com/leaderboard/sweatlas-refactoring"},{name:"SWE-Atlas Test Writing",score:31.76,metric:"score",harness:"Claude Code",source:"https://labs.scale.com/leaderboard/sweatlas-tw"},{name:"Artificial Analysis Coding Agent Index",score:49.4,metric:"average pass@1",harness:"Claude Code",variant:"medium",source:"https://artificialanalysis.ai/agents/coding-agents"},{name:"SWE-Atlas Codebase QnA",score:70.3,metric:"pass@1",harness:"Claude Code",variant:"medium",source:"https://artificialanalysis.ai/agents/coding-agents"},{name:"SWE-Bench Pro",score:14.9,metric:"pass@1",harness:"Claude Code",variant:"medium",dataset:"hard-aa",source:"https://artificialanalysis.ai/agents/coding-agents"},{name:"Terminal-Bench",score:63.1,metric:"pass@1",harness:"Claude Code",variant:"medium",version:"2.1",source:"https://artificialanalysis.ai/agents/coding-agents"},{name:"Terminal-Bench",score:67,metric:"success rate",harness:"Terminus-2",version:"2.1",source:"https://www.anthropic.com/news/claude-sonnet-5",date:"2026-06-30"},{name:"Humanity's Last Exam",score:34.6,metric:"accuracy",variant:"no tools",source:"https://www.anthropic.com/news/claude-sonnet-5",date:"2026-06-30"},{name:"Humanity's Last Exam",score:46.8,metric:"accuracy",variant:"with tools",source:"https://www.anthropic.com/news/claude-sonnet-5",date:"2026-06-30"},{name:"OSWorld-Verified",score:78.5,metric:"success rate",source:"https://www.anthropic.com/news/claude-sonnet-5",date:"2026-06-30"}]},"anthropic/claude-3-haiku-20240307":{id:"anthropic/claude-3-haiku-20240307",name:"Claude Haiku 3",description:"Legacy model retained for compatibility with older integrations",family:"claude-haiku",attachment:true,reasoning:false,tool_call:true,temperature:true,knowledge:"2023-08-31",release_date:"2024-03-13",last_updated:"2024-03-13",modalities:{input:["text","image","pdf"],output:["text"]},open_weights:false,limit:{context:2e5,output:4096}},"anthropic/claude-sonnet-4-20250514":{id:"anthropic/claude-sonnet-4-20250514",name:"Claude Sonnet 4",description:"Balanced Claude model for coding, analysis, agent workflows, and cost control",family:"claude-sonnet",attachment:true,reasoning:true,tool_call:true,temperature:true,knowledge:"2025-03-31",release_date:"2025-05-22",last_updated:"2025-05-22",modalities:{input:["text","image","pdf"],output:["text"]},open_weights:false,limit:{context:2e5,output:64e3},benchmarks:[{name:"Aider Polyglot",score:61.3,metric:"percent correct",source:"https://aider.chat/docs/leaderboards/",date:"2025-05-24"}]},"anthropic/claude-3-5-haiku-20241022":{id:"anthropic/claude-3-5-haiku-20241022",name:"Claude Haiku 3.5",description:"Fast Claude model for responsive assistance, classification, and lightweight agents",family:"claude-haiku",attachment:true,reasoning:false,tool_call:true,temperature:true,knowledge:"2024-07-31",release_date:"2024-10-22",last_updated:"2024-10-22",modalities:{input:["text","image","pdf"],output:["text"]},open_weights:false,limit:{context:2e5,output:8192},benchmarks:[{name:"Aider Polyglot",score:28,metric:"percent correct",source:"https://aider.chat/docs/leaderboards/",date:"2024-12-21"}]},"anthropic/claude-opus-4-7":{id:"anthropic/claude-opus-4-7",name:"Claude Opus 4.7",description:"Stronger Opus tier for advanced software work and high-stakes reasoning",family:"claude-opus",attachment:true,reasoning:true,tool_call:true,temperature:false,knowledge:"2026-01-31",release_date:"2026-04-16",last_updated:"2026-04-16",modalities:{input:["text","image","pdf"],output:["text"]},open_weights:false,limit:{context:1e6,output:128e3},benchmarks:[{name:"SWE-Bench Pro",score:64.3,metric:"resolve rate",source:"https://www.anthropic.com/news/claude-opus-4-8",date:"2026-05-28"},{name:"Terminal-Bench",score:66.1,metric:"success rate",harness:"Terminus-2",version:"2.1",source:"https://www.anthropic.com/news/claude-opus-4-8",date:"2026-05-28"},{name:"SWE-Atlas Refactoring",score:48.57,metric:"score",harness:"Claude Code",source:"https://labs.scale.com/leaderboard/sweatlas-refactoring"},{name:"Artificial Analysis Coding Agent Index",score:66.6,metric:"average pass@1",harness:"Claude Code",variant:"max",source:"https://artificialanalysis.ai/agents/coding-agents"},{name:"SWE-Atlas Codebase QnA",score:81,metric:"pass@1",harness:"Claude Code",variant:"max",source:"https://artificialanalysis.ai/agents/coding-agents"},{name:"SWE-Bench Pro",score:44.9,metric:"pass@1",harness:"Claude Code",variant:"max",dataset:"hard-aa",source:"https://artificialanalysis.ai/agents/coding-agents"},{name:"Terminal-Bench",score:73.8,metric:"pass@1",harness:"Claude Code",variant:"max",version:"2.1",source:"https://artificialanalysis.ai/agents/coding-agents"},{name:"Artificial Analysis Coding Agent Index",score:61.2,metric:"average pass@1",harness:"Cursor CLI",variant:"medium",source:"https://artificialanalysis.ai/agents/coding-agents"},{name:"SWE-Atlas Codebase QnA",score:78.4,metric:"pass@1",harness:"Cursor CLI",variant:"medium",source:"https://artificialanalysis.ai/agents/coding-agents"},{name:"SWE-Bench Pro",score:34.4,metric:"pass@1",harness:"Cursor CLI",variant:"medium",dataset:"hard-aa",source:"https://artificialanalysis.ai/agents/coding-agents"},{name:"Terminal-Bench",score:70.6,metric:"pass@1",harness:"Cursor CLI",variant:"medium",version:"2.1",source:"https://artificialanalysis.ai/agents/coding-agents"},{name:"Artificial Analysis Coding Agent Index",score:59.9,metric:"average pass@1",harness:"Claude Code",variant:"medium",source:"https://artificialanalysis.ai/agents/coding-agents"},{name:"SWE-Atlas Codebase QnA",score:71.7,metric:"pass@1",harness:"Claude Code",variant:"medium",source:"https://artificialanalysis.ai/agents/coding-agents"},{name:"SWE-Bench Pro",score:36.4,metric:"pass@1",harness:"Claude Code",variant:"medium",dataset:"hard-aa",source:"https://artificialanalysis.ai/agents/coding-agents"},{name:"Terminal-Bench",score:71.4,metric:"pass@1",harness:"Claude Code",variant:"medium",version:"2.1",source:"https://artificialanalysis.ai/agents/coding-agents"},{name:"GPQA Diamond",score:94.2,metric:"accuracy",source:"https://openai.com/index/introducing-gpt-5-5/",date:"2026-04-23"},{name:"Humanity's Last Exam",score:46.9,metric:"accuracy",variant:"no tools",source:"https://openai.com/index/introducing-gpt-5-5/",date:"2026-04-23"},{name:"Humanity's Last Exam",score:54.7,metric:"accuracy",variant:"with tools",source:"https://openai.com/index/introducing-gpt-5-5/",date:"2026-04-23"},{name:"OSWorld-Verified",score:78,metric:"success rate",source:"https://openai.com/index/introducing-gpt-5-5/",date:"2026-04-23"}]},"nex-agi/nex-n2-pro":{id:"nex-agi/nex-n2-pro",name:"Nex-N2-Pro",description:"Open agentic MoE model (397B total, 17B active) for coding, tool use, and research workflows",attachment:true,reasoning:true,tool_call:true,structured_output:true,temperature:true,release_date:"2026-06-02",last_updated:"2026-06-02",modalities:{input:["text","image"],output:["text"]},open_weights:true,limit:{context:262144,output:262144},weights:[{label:"Hugging Face",url:"https://huggingface.co/nex-agi/Nex-N2-Pro"}]},"cohere/command-r-08-2024":{id:"cohere/command-r-08-2024",name:"Command R",description:"Cohere retrieval model for long-context chat and enterprise RAG workflows",family:"command-r",attachment:false,reasoning:false,tool_call:true,temperature:true,knowledge:"2024-06-01",release_date:"2024-08-30",last_updated:"2024-08-30",modalities:{input:["text"],output:["text"]},open_weights:true,limit:{context:128e3,output:4e3},weights:[{label:"Hugging Face",url:"https://huggingface.co/CohereLabs/c4ai-command-r-08-2024"}]},"cohere/north-mini-code-1-0":{id:"cohere/north-mini-code-1-0",name:"North Mini Code",description:"Cohere coding model for practical software engineering and agentic edits",family:"north",attachment:false,reasoning:true,tool_call:true,structured_output:true,temperature:true,knowledge:"2025-09-23",release_date:"2026-06-09",last_updated:"2026-06-09",modalities:{input:["text"],output:["text"]},open_weights:true,limit:{context:256e3,output:64e3},benchmarks:[{name:"SWE-Bench Verified",score:67.6,metric:"resolved",harness:"SWE-agent",source:"https://huggingface.co/CohereLabs/North-Mini-Code-1.0",date:"2026-06-09"},{name:"SWE-Bench Pro",score:40.2,metric:"resolve rate",harness:"SWE-agent",source:"https://huggingface.co/CohereLabs/North-Mini-Code-1.0",date:"2026-06-09"},{name:"Artificial Analysis Intelligence Index",score:27.6,metric:"index score",source:"https://artificialanalysis.ai/articles/north-mini-code-cohere-s-small-coding-focused-moe-model",date:"2026-06-09"},{name:"Artificial Analysis Coding Index",score:33.4,metric:"index score",source:"https://artificialanalysis.ai/articles/north-mini-code-cohere-s-small-coding-focused-moe-model",date:"2026-06-09"},{name:"GDPval-AA",score:14,metric:"win rate",source:"https://artificialanalysis.ai/articles/north-mini-code-cohere-s-small-coding-focused-moe-model",date:"2026-06-09"},{name:"\u03C4\xB2-Bench Telecom",score:37,metric:"success rate",source:"https://artificialanalysis.ai/articles/north-mini-code-cohere-s-small-coding-focused-moe-model",date:"2026-06-09"}]},"cohere/command-a-translate-08-2025":{id:"cohere/command-a-translate-08-2025",name:"Command A Translate",description:"Translation model for multilingual conversion, localization, and cross-language workflows",family:"command-a",attachment:false,reasoning:false,tool_call:true,temperature:true,knowledge:"2024-06-01",release_date:"2025-08-28",last_updated:"2025-08-28",modalities:{input:["text"],output:["text"]},open_weights:true,limit:{context:8e3,output:8e3},weights:[{label:"Hugging Face",url:"https://huggingface.co/CohereLabs/c4ai-command-a-translate-08-2025"}]},"cohere/c4ai-aya-expanse-8b":{id:"cohere/c4ai-aya-expanse-8b",name:"Aya Expanse 8B",description:"Compact open multilingual model optimized for generation across 23 languages",attachment:false,reasoning:false,tool_call:false,temperature:true,release_date:"2024-10-24",last_updated:"2024-10-24",modalities:{input:["text"],output:["text"]},open_weights:true,limit:{context:8e3,output:4e3},license:"CC-BY-NC-4.0",weights:[{label:"Hugging Face",url:"https://huggingface.co/CohereLabs/aya-expanse-8b"}]},"cohere/command-r7b-arabic-02-2025":{id:"cohere/command-r7b-arabic-02-2025",name:"Command R7B Arabic",description:"Open Command R model optimized for Arabic enterprise chat, RAG, and cultural knowledge",family:"command-r",attachment:false,reasoning:false,tool_call:true,temperature:true,knowledge:"2024-06-01",release_date:"2025-02-27",last_updated:"2025-02-27",modalities:{input:["text"],output:["text"]},open_weights:true,limit:{context:128e3,output:4e3},weights:[{label:"Hugging Face",url:"https://huggingface.co/CohereLabs/c4ai-command-r7b-arabic-02-2025"}]},"cohere/command-a-plus-05-2026":{id:"cohere/command-a-plus-05-2026",name:"Command A Plus",description:"Cohere's stronger command model for multilingual agents and enterprise workflows",family:"command-a",attachment:true,reasoning:true,tool_call:true,structured_output:true,temperature:true,knowledge:"2025-04-01",release_date:"2026-05-20",last_updated:"2026-06-09",modalities:{input:["text","image"],output:["text"]},open_weights:true,limit:{context:128e3,output:64e3}},"cohere/command-a-03-2025":{id:"cohere/command-a-03-2025",name:"Command A",description:"Cohere command model for multilingual enterprise agents, tools, and chat",family:"command-a",attachment:false,reasoning:false,tool_call:true,temperature:true,knowledge:"2024-06-01",release_date:"2025-03-13",last_updated:"2025-03-13",modalities:{input:["text"],output:["text"]},open_weights:true,limit:{context:256e3,output:8e3},weights:[{label:"Hugging Face",url:"https://huggingface.co/CohereLabs/c4ai-command-a-03-2025"}],benchmarks:[{name:"Aider Polyglot",score:12,metric:"percent correct",source:"https://aider.chat/docs/leaderboards/",date:"2025-03-14"}]},"cohere/c4ai-aya-vision-8b":{id:"cohere/c4ai-aya-vision-8b",name:"Aya Vision 8B",description:"Compact open multilingual vision model for OCR and visual question answering",attachment:true,reasoning:false,tool_call:false,temperature:true,release_date:"2025-03-04",last_updated:"2025-05-14",modalities:{input:["text","image"],output:["text"]},open_weights:true,limit:{context:16e3,output:4e3},license:"CC-BY-NC-4.0",weights:[{label:"Hugging Face",url:"https://huggingface.co/CohereLabs/aya-vision-8b"}]},"cohere/c4ai-aya-vision-32b":{id:"cohere/c4ai-aya-vision-32b",name:"Aya Vision 32B",description:"Open multilingual vision model for OCR, visual reasoning, and image question answering",attachment:true,reasoning:false,tool_call:false,temperature:true,release_date:"2025-03-04",last_updated:"2025-05-14",modalities:{input:["text","image"],output:["text"]},open_weights:true,limit:{context:16e3,output:4e3},license:"CC-BY-NC-4.0",weights:[{label:"Hugging Face",url:"https://huggingface.co/CohereLabs/aya-vision-32b"}]},"cohere/command-r7b-12-2024":{id:"cohere/command-r7b-12-2024",name:"Command R7B",description:"Cohere retrieval model for long-context chat and enterprise RAG workflows",family:"command-r",attachment:false,reasoning:false,tool_call:true,temperature:true,knowledge:"2024-06-01",release_date:"2024-12-02",last_updated:"2024-12-02",modalities:{input:["text"],output:["text"]},open_weights:true,limit:{context:128e3,output:4e3},weights:[{label:"Hugging Face",url:"https://huggingface.co/CohereLabs/c4ai-command-r7b-12-2024"}]},"cohere/command-r-plus-08-2024":{id:"cohere/command-r-plus-08-2024",name:"Command R+",description:"Cohere's RAG workhorse for long-context enterprise search and tool use",family:"command-r",attachment:false,reasoning:false,tool_call:true,temperature:true,knowledge:"2024-06-01",release_date:"2024-08-30",last_updated:"2024-08-30",modalities:{input:["text"],output:["text"]},open_weights:true,limit:{context:128e3,output:4e3},weights:[{label:"Hugging Face",url:"https://huggingface.co/CohereLabs/c4ai-command-r-plus-08-2024"}]},"cohere/command-a-vision-07-2025":{id:"cohere/command-a-vision-07-2025",name:"Command A Vision",description:"Cohere vision model for multilingual document analysis, OCR, and image understanding",family:"command-a",attachment:true,reasoning:false,tool_call:false,temperature:true,knowledge:"2024-06-01",release_date:"2025-07-31",last_updated:"2025-07-31",modalities:{input:["text","image"],output:["text"]},open_weights:true,limit:{context:128e3,output:8e3},weights:[{label:"Hugging Face",url:"https://huggingface.co/CohereLabs/c4ai-command-a-vision-07-2025"}]},"cohere/command-a-reasoning-08-2025":{id:"cohere/command-a-reasoning-08-2025",name:"Command A Reasoning",description:"Cohere reasoning model for multilingual enterprise agents, tools, and complex workflows",family:"command-a",attachment:false,reasoning:true,tool_call:true,temperature:true,knowledge:"2024-06-01",release_date:"2025-08-21",last_updated:"2025-08-21",modalities:{input:["text"],output:["text"]},open_weights:true,limit:{context:256e3,output:32e3},weights:[{label:"Hugging Face",url:"https://huggingface.co/CohereLabs/c4ai-command-a-reasoning-08-2025"}]},"cohere/c4ai-aya-expanse-32b":{id:"cohere/c4ai-aya-expanse-32b",name:"Aya Expanse 32B",description:"Open multilingual model optimized for generation across 23 languages",attachment:false,reasoning:false,tool_call:false,temperature:true,release_date:"2024-10-24",last_updated:"2024-10-24",modalities:{input:["text"],output:["text"]},open_weights:true,limit:{context:128e3,output:4e3},license:"CC-BY-NC-4.0",weights:[{label:"Hugging Face",url:"https://huggingface.co/CohereLabs/aya-expanse-32b"}]},"deepseek/deepseek-v4-flash-0731":{id:"deepseek/deepseek-v4-flash-0731",name:"DeepSeek V4 Flash 0731",description:"Official DeepSeek V4 Flash release with enhanced agentic capabilities and integrated DSpark speculative decoding",family:"deepseek-flash",attachment:false,reasoning:true,tool_call:true,structured_output:true,temperature:true,knowledge:"2025-05",release_date:"2026-07-31",last_updated:"2026-07-31",modalities:{input:["text"],output:["text"]},open_weights:true,limit:{context:1e6,output:384e3},license:"MIT",weights:[{label:"Hugging Face",url:"https://huggingface.co/deepseek-ai/DeepSeek-V4-Flash-0731"}],benchmarks:[{name:"Terminal-Bench",score:82.7,metric:"pass@1",variant:"max",version:"2.1",source:"https://huggingface.co/deepseek-ai/DeepSeek-V4-Flash-0731"},{name:"NL2Repo",score:54.2,metric:"resolve rate",harness:"DeepSeek Harness minimal mode",variant:"max effort",source:"https://api-docs.deepseek.com/updates/",date:"2026-07-31"},{name:"CyberGym",score:76.7,metric:"score",harness:"DeepSeek Harness minimal mode",variant:"max effort",source:"https://api-docs.deepseek.com/updates/",date:"2026-07-31"},{name:"DeepSWE",score:54.4,metric:"resolve rate",harness:"DeepSeek Harness minimal mode",variant:"max effort",source:"https://api-docs.deepseek.com/updates/",date:"2026-07-31"},{name:"Toolathlon-Verified",score:70.3,metric:"score",harness:"DeepSeek Harness minimal mode",variant:"max effort",source:"https://api-docs.deepseek.com/updates/",date:"2026-07-31"},{name:"Agents' Last Exam",score:25.2,metric:"score",harness:"DeepSeek Harness minimal mode",variant:"max effort",source:"https://api-docs.deepseek.com/updates/",date:"2026-07-31"},{name:"AutomationBench",score:25.1,metric:"success rate",variant:"max effort",dataset:"public",source:"https://api-docs.deepseek.com/updates/",date:"2026-07-31"},{name:"DSBench-FullStack",score:68.7,metric:"score",variant:"max effort",dataset:"internal",source:"https://api-docs.deepseek.com/updates/",date:"2026-07-31"},{name:"DSBench-Hard",score:59.6,metric:"score",variant:"max effort",dataset:"internal",source:"https://api-docs.deepseek.com/updates/",date:"2026-07-31"}]},"deepseek/deepseek-v3-0324":{id:"deepseek/deepseek-v3-0324",name:"DeepSeek V3 0324",description:"March 2025 checkpoint of DeepSeek-V3 with improved reasoning and coding",family:"deepseek",attachment:false,reasoning:false,tool_call:true,temperature:true,release_date:"2025-03-24",last_updated:"2025-03-24",modalities:{input:["text"],output:["text"]},open_weights:true,limit:{context:163840,output:163840},weights:[{label:"Model weights",url:"https://huggingface.co/deepseek-ai/DeepSeek-V3-0324",format:"safetensors"}]},"deepseek/deepseek-v4-flash-0423":{id:"deepseek/deepseek-v4-flash-0423",name:"DeepSeek V4 Flash 0423",description:"Initial DeepSeek V4 Flash snapshot for economical reasoning, coding, and million-token agent workloads",family:"deepseek-flash",attachment:false,reasoning:true,tool_call:true,structured_output:true,temperature:true,knowledge:"2025-05",release_date:"2026-04-23",last_updated:"2026-04-23",modalities:{input:["text"],output:["text"]},open_weights:true,limit:{context:1e6,output:384e3},license:"MIT",weights:[{label:"Hugging Face",url:"https://huggingface.co/deepseek-ai/DeepSeek-V4-Flash"}]},"deepseek/deepseek-v4.1-flash":{id:"deepseek/deepseek-v4.1-flash",name:"DeepSeek V4.1 Flash",description:"DeepSeek V4.1 Flash model for reasoning and agentic coding",family:"deepseek-flash",attachment:true,reasoning:true,tool_call:true,structured_output:true,temperature:true,knowledge:"2025-05",release_date:"2026-09-10",last_updated:"2026-09-10",modalities:{input:["text","image"],output:["text"]},open_weights:true,limit:{context:1e6,output:384e3},license:"MIT",weights:[{label:"Hugging Face",url:"https://huggingface.co/deepseek-ai/DeepSeek-V4.1-Flash"}],benchmarks:[{name:"GPQA Diamond",score:90.9,metric:"pass@1",variant:"reasoning_effort=100",source:"https://huggingface.co/deepseek-ai/DeepSeek-V4.1-Flash"},{name:"MathArena Apex",score:65.6,metric:"pass@1",variant:"reasoning_effort=100",source:"https://huggingface.co/deepseek-ai/DeepSeek-V4.1-Flash"},{name:"Humanity's Last Exam",score:36.8,metric:"pass@1",variant:"reasoning_effort=100",dataset:"full set",source:"https://huggingface.co/deepseek-ai/DeepSeek-V4.1-Flash"},{name:"Humanity's Last Exam",score:39.1,metric:"pass@1",variant:"reasoning_effort=100",dataset:"text-only subset",source:"https://huggingface.co/deepseek-ai/DeepSeek-V4.1-Flash"},{name:"Codeforces",score:3471,metric:"rating",variant:"reasoning_effort=100",source:"https://huggingface.co/deepseek-ai/DeepSeek-V4.1-Flash"},{name:"Terminal-Bench",score:90.6,metric:"pass@1",harness:"DeepSeek Harness minimal mode",variant:"reasoning_effort=100",version:"2.1",source:"https://huggingface.co/deepseek-ai/DeepSeek-V4.1-Flash"},{name:"Terminal-Bench",score:30,metric:"pass@1",harness:"DeepSeek Harness minimal mode",variant:"reasoning_effort=100",version:"3.0",source:"https://huggingface.co/deepseek-ai/DeepSeek-V4.1-Flash"},{name:"Terminal-Bench",score:31.2,metric:"pass@1",harness:"DeepSeek Harness minimal mode",variant:"reasoning_effort=100",version:"4.0",source:"https://huggingface.co/deepseek-ai/DeepSeek-V4.1-Flash"},{name:"DeepSWE",score:74.2,metric:"resolved",harness:"mini-swe-agent",variant:"reasoning_effort=100",version:"1.1",source:"https://huggingface.co/deepseek-ai/DeepSeek-V4.1-Flash"},{name:"ProgramBench",score:20.3,metric:"almost@1",harness:"DeepSeek Harness minimal mode",variant:"reasoning_effort=100",source:"https://huggingface.co/deepseek-ai/DeepSeek-V4.1-Flash"},{name:"NL2Repo",score:64,metric:"score",harness:"DeepSeek Harness minimal mode",variant:"reasoning_effort=100",source:"https://huggingface.co/deepseek-ai/DeepSeek-V4.1-Flash"},{name:"CyberGym",score:88.1,metric:"pass@1",variant:"reasoning_effort=100",source:"https://huggingface.co/deepseek-ai/DeepSeek-V4.1-Flash"},{name:"ExploitGym",score:15.3,metric:"pass@1",variant:"reasoning_effort=100",source:"https://huggingface.co/deepseek-ai/DeepSeek-V4.1-Flash"},{name:"AutomationBench",score:54.8,metric:"pass@1",variant:"reasoning_effort=100",source:"https://huggingface.co/deepseek-ai/DeepSeek-V4.1-Flash"},{name:"Agents' Last Exam",score:31.8,metric:"pass@1",variant:"reasoning_effort=100",source:"https://huggingface.co/deepseek-ai/DeepSeek-V4.1-Flash"},{name:"SEC-Bench Pro",score:62.8,metric:"pass@1",harness:"Claude Code",variant:"reasoning_effort=100",source:"https://huggingface.co/deepseek-ai/DeepSeek-V4.1-Flash"},{name:"Humanity's Last Exam",score:63.9,metric:"pass@1",variant:"reasoning_effort=100; with tools",source:"https://huggingface.co/deepseek-ai/DeepSeek-V4.1-Flash"},{name:"Chartography",score:78.9,metric:"pass@1",harness:"Claude Code",variant:"reasoning_effort=100; with tools",source:"https://huggingface.co/deepseek-ai/DeepSeek-V4.1-Flash"},{name:"BabyVision",score:89.6,metric:"pass@1",harness:"Claude Code",variant:"reasoning_effort=100; with tools",source:"https://huggingface.co/deepseek-ai/DeepSeek-V4.1-Flash"},{name:"ZeroBench",score:49,metric:"pass@5",harness:"Claude Code",variant:"reasoning_effort=100; with tools",dataset:"main",source:"https://huggingface.co/deepseek-ai/DeepSeek-V4.1-Flash"},{name:"DeepSWE",score:69.8,metric:"resolved",harness:"Claude Code",variant:"reasoning_effort=100",version:"1.1",source:"https://huggingface.co/deepseek-ai/DeepSeek-V4.1-Flash"},{name:"Terminal-Bench",score:88,metric:"pass@1",harness:"Claude Code",variant:"reasoning_effort=100",version:"2.1",source:"https://huggingface.co/deepseek-ai/DeepSeek-V4.1-Flash"},{name:"DeepSWE",score:65.6,metric:"resolved",harness:"Codex",variant:"reasoning_effort=100",version:"1.1",source:"https://huggingface.co/deepseek-ai/DeepSeek-V4.1-Flash"},{name:"Terminal-Bench",score:84.1,metric:"pass@1",harness:"Codex",variant:"reasoning_effort=100",version:"2.1",source:"https://huggingface.co/deepseek-ai/DeepSeek-V4.1-Flash"},{name:"DeepSWE",score:65.5,metric:"resolved",harness:"OpenCode",variant:"reasoning_effort=100",version:"1.1",source:"https://huggingface.co/deepseek-ai/DeepSeek-V4.1-Flash"},{name:"Terminal-Bench",score:85,metric:"pass@1",harness:"OpenCode",variant:"reasoning_effort=100",version:"2.1",source:"https://huggingface.co/deepseek-ai/DeepSeek-V4.1-Flash"},{name:"DeepSWE",score:66.2,metric:"resolved",harness:"Pi",variant:"reasoning_effort=100",version:"1.1",source:"https://huggingface.co/deepseek-ai/DeepSeek-V4.1-Flash"},{name:"Terminal-Bench",score:86.1,metric:"pass@1",harness:"Pi",variant:"reasoning_effort=100",version:"2.1",source:"https://huggingface.co/deepseek-ai/DeepSeek-V4.1-Flash"},{name:"Terminal-Bench",score:90.3,metric:"pass@1",harness:"mini-swe-agent",variant:"reasoning_effort=100",version:"2.1",source:"https://huggingface.co/deepseek-ai/DeepSeek-V4.1-Flash"},{name:"DeepSWE",score:72.6,metric:"resolved",harness:"DeepSeek Harness minimal mode",variant:"reasoning_effort=100",version:"1.1",source:"https://huggingface.co/deepseek-ai/DeepSeek-V4.1-Flash"},{name:"DeepSWE",score:70.5,metric:"resolved",harness:"DeepSeek Harness standard mode",variant:"reasoning_effort=100",version:"1.1",source:"https://huggingface.co/deepseek-ai/DeepSeek-V4.1-Flash"},{name:"Terminal-Bench",score:85.8,metric:"pass@1",harness:"DeepSeek Harness standard mode",variant:"reasoning_effort=100",version:"2.1",source:"https://huggingface.co/deepseek-ai/DeepSeek-V4.1-Flash"},{name:"DeepSWE",score:67.6,metric:"resolved",harness:"DeepSeek Harness PTC mode",variant:"reasoning_effort=100",version:"1.1",source:"https://huggingface.co/deepseek-ai/DeepSeek-V4.1-Flash"},{name:"Terminal-Bench",score:85.8,metric:"pass@1",harness:"DeepSeek Harness PTC mode",variant:"reasoning_effort=100",version:"2.1",source:"https://huggingface.co/deepseek-ai/DeepSeek-V4.1-Flash"}]},"deepseek/deepseek-v4-flash-vision-exp":{id:"deepseek/deepseek-v4-flash-vision-exp",name:"DeepSeek V4 Flash Vision Exp",description:"Experimental multimodal DeepSeek V4 Flash model for image understanding, coding, and agentic work",family:"deepseek-flash",attachment:true,reasoning:true,tool_call:true,structured_output:true,temperature:true,release_date:"2026-08-21",last_updated:"2026-09-01",modalities:{input:["text","image"],output:["text"]},open_weights:true,limit:{context:1e6,output:384e3},license:"MIT",weights:[{label:"Hugging Face",url:"https://huggingface.co/deepseek-ai/DeepSeek-V4-Flash-Vision-Exp"}],benchmarks:[{name:"Terminal-Bench",score:83.9,metric:"score",harness:"DeepSeek Harness minimal mode",variant:"max effort",version:"2.1",source:"https://huggingface.co/deepseek-ai/DeepSeek-V4-Flash-Vision-Exp"},{name:"NL2Repo",score:57.7,metric:"score",harness:"DeepSeek Harness minimal mode",variant:"max effort",source:"https://huggingface.co/deepseek-ai/DeepSeek-V4-Flash-Vision-Exp"},{name:"CyberGym",score:75.3,metric:"score",harness:"DeepSeek Harness minimal mode",variant:"max effort",source:"https://huggingface.co/deepseek-ai/DeepSeek-V4-Flash-Vision-Exp"},{name:"DeepSWE",score:59.3,metric:"score",harness:"DeepSeek Harness minimal mode",variant:"max effort",source:"https://huggingface.co/deepseek-ai/DeepSeek-V4-Flash-Vision-Exp"},{name:"Toolathlon-Verified",score:75.9,metric:"score",harness:"DeepSeek Harness minimal mode",variant:"max effort",source:"https://huggingface.co/deepseek-ai/DeepSeek-V4-Flash-Vision-Exp"},{name:"DSBench-Hard",score:63.6,metric:"score",harness:"DeepSeek Harness minimal mode",variant:"max effort",dataset:"internal",source:"https://huggingface.co/deepseek-ai/DeepSeek-V4-Flash-Vision-Exp"},{name:"AutomationBench",score:25.7,metric:"score",harness:"DeepSeek Harness minimal mode",variant:"max effort",dataset:"public",source:"https://huggingface.co/deepseek-ai/DeepSeek-V4-Flash-Vision-Exp"},{name:"ApexBench",score:36.5,metric:"pass@1",source:"https://huggingface.co/deepseek-ai/DeepSeek-V4-Flash-Vision-Exp"},{name:"Agents' Last Exam",score:27.3,metric:"score",source:"https://huggingface.co/deepseek-ai/DeepSeek-V4-Flash-Vision-Exp"},{name:"Chartography",score:64.3,metric:"score",source:"https://huggingface.co/deepseek-ai/DeepSeek-V4-Flash-Vision-Exp"},{name:"ZeroBench",score:35,metric:"pass@5",source:"https://huggingface.co/deepseek-ai/DeepSeek-V4-Flash-Vision-Exp"}]},"deepseek/deepseek-v3":{id:"deepseek/deepseek-v3",name:"DeepSeek-V3",description:"Open DeepSeek MoE chat model for coding, math, and general reasoning",family:"deepseek",attachment:false,reasoning:false,tool_call:true,temperature:true,release_date:"2024-12-26",last_updated:"2024-12-26",modalities:{input:["text"],output:["text"]},open_weights:true,limit:{context:131072,output:8192},license:"DeepSeek Model License",weights:[{label:"Hugging Face",url:"https://huggingface.co/deepseek-ai/DeepSeek-V3"}]},"deepseek/deepseek-ocr-2":{id:"deepseek/deepseek-ocr-2",name:"DeepSeek OCR 2",description:"High-accuracy OCR model for extracting text from documents, screenshots, receipts, and natural scenes",attachment:true,reasoning:false,tool_call:false,release_date:"2026-01-27",last_updated:"2026-01-27",modalities:{input:["text","image"],output:["text"]},open_weights:true,limit:{context:8192,output:8192}},"deepseek/deepseek-chat":{id:"deepseek/deepseek-chat",name:"DeepSeek Chat",description:"DeepSeek chat model for instruction following, coding, and analysis",family:"deepseek",attachment:true,reasoning:false,tool_call:true,temperature:true,knowledge:"2025-09",release_date:"2025-12-01",last_updated:"2026-02-28",modalities:{input:["text"],output:["text"]},open_weights:true,limit:{context:1e6,output:384e3},weights:[{label:"Hugging Face",url:"https://huggingface.co/deepseek-ai/DeepSeek-V3.2"}],benchmarks:[{name:"Aider Polyglot",score:70.2,metric:"percent correct",source:"https://aider.chat/docs/leaderboards/",date:"2025-10-03"}]},"deepseek/deepseek-v4-pro-0813":{id:"deepseek/deepseek-v4-pro-0813",name:"DeepSeek V4 Pro 0813",description:"DeepSeek V4 Pro snapshot with million-token context and support for thinking and non-thinking modes",family:"deepseek-thinking",attachment:false,reasoning:true,tool_call:true,structured_output:true,temperature:true,release_date:"2026-08-12",last_updated:"2026-08-22",modalities:{input:["text"],output:["text"]},open_weights:true,limit:{context:1e6,output:384e3},license:"MIT",weights:[{label:"Hugging Face",url:"https://huggingface.co/deepseek-ai/DeepSeek-V4-Pro-0813"}],benchmarks:[{name:"Humanity's Last Exam",score:42.7,metric:"score",variant:"without tools",source:"https://huggingface.co/deepseek-ai/DeepSeek-V4-Pro-0813"},{name:"Humanity's Last Exam",score:60,metric:"score",variant:"with tools",source:"https://huggingface.co/deepseek-ai/DeepSeek-V4-Pro-0813"},{name:"Terminal-Bench",score:87.9,metric:"score",harness:"DeepSeek Harness minimal mode",variant:"max effort",version:"2.1",source:"https://huggingface.co/deepseek-ai/DeepSeek-V4-Pro-0813"},{name:"NL2Repo",score:61.5,metric:"score",harness:"DeepSeek Harness minimal mode",variant:"max effort",source:"https://huggingface.co/deepseek-ai/DeepSeek-V4-Pro-0813"},{name:"CyberGym",score:83.3,metric:"score",harness:"DeepSeek Harness minimal mode",variant:"max effort",source:"https://huggingface.co/deepseek-ai/DeepSeek-V4-Pro-0813"},{name:"DeepSWE",score:62.7,metric:"score",harness:"DeepSeek Harness minimal mode",variant:"max effort",source:"https://huggingface.co/deepseek-ai/DeepSeek-V4-Pro-0813"},{name:"Toolathlon-Verified",score:74.1,metric:"score",source:"https://huggingface.co/deepseek-ai/DeepSeek-V4-Pro-0813"},{name:"Agents' Last Exam",score:25.7,metric:"score",source:"https://huggingface.co/deepseek-ai/DeepSeek-V4-Pro-0813"},{name:"AutomationBench",score:31.8,metric:"score",dataset:"public",source:"https://huggingface.co/deepseek-ai/DeepSeek-V4-Pro-0813"},{name:"DSBench-FullStack",score:71.1,metric:"score",dataset:"internal",source:"https://huggingface.co/deepseek-ai/DeepSeek-V4-Pro-0813"},{name:"DSBench-Hard",score:67.2,metric:"score",dataset:"internal",source:"https://huggingface.co/deepseek-ai/DeepSeek-V4-Pro-0813"}]},"deepseek/deepseek-v4-pro-0423":{id:"deepseek/deepseek-v4-pro-0423",name:"DeepSeek V4 Pro 0423",description:"DeepSeek V4 Pro initial snapshot with million-token context and support for thinking and non-thinking modes",family:"deepseek-thinking",attachment:false,reasoning:true,tool_call:true,structured_output:true,temperature:true,knowledge:"2025-05",release_date:"2026-04-23",last_updated:"2026-04-23",modalities:{input:["text"],output:["text"]},open_weights:true,limit:{context:1e6,output:384e3}},"deepseek/deepseek-reasoner":{id:"deepseek/deepseek-reasoner",name:"DeepSeek Reasoner",description:"DeepSeek reasoning model for multi-step analysis, math, coding, and tools",family:"deepseek-thinking",attachment:true,reasoning:true,tool_call:true,temperature:true,knowledge:"2025-09",release_date:"2025-12-01",last_updated:"2026-02-28",modalities:{input:["text"],output:["text"]},open_weights:true,limit:{context:1e6,output:384e3},weights:[{label:"Hugging Face",url:"https://huggingface.co/deepseek-ai/DeepSeek-V3.2"}],benchmarks:[{name:"Aider Polyglot",score:74.2,metric:"percent correct",source:"https://aider.chat/docs/leaderboards/",date:"2025-10-03"}]},"deepseek/deepseek-r1-distill-qwen-32b":{id:"deepseek/deepseek-r1-distill-qwen-32b",name:"DeepSeek-R1-Distill-Qwen-32B",description:"R1 reasoning distilled into Qwen 2.5 32B for efficient open-weight step-by-step problem solving",family:"deepseek-thinking",attachment:false,reasoning:true,tool_call:false,temperature:true,release_date:"2025-01-20",last_updated:"2025-01-20",modalities:{input:["text"],output:["text"]},open_weights:true,limit:{context:131072,output:32768},weights:[{label:"Hugging Face",url:"https://huggingface.co/deepseek-ai/DeepSeek-R1-Distill-Qwen-32B"}]},"deepseek/deepseek-v3.1":{id:"deepseek/deepseek-v3.1",name:"DeepSeek-V3.1",description:"Hybrid-reasoning DeepSeek model with thinking and non-thinking modes",family:"deepseek",attachment:false,reasoning:true,tool_call:true,temperature:true,release_date:"2025-08-21",last_updated:"2025-08-21",modalities:{input:["text"],output:["text"]},open_weights:true,limit:{context:131072,output:8192},license:"MIT License",weights:[{label:"Hugging Face",url:"https://huggingface.co/deepseek-ai/DeepSeek-V3.1"}]},"deepseek/deepseek-r1":{id:"deepseek/deepseek-r1",name:"DeepSeek-R1",description:"Classic open reasoning model for transparent math, coding, and deliberate problem solving",family:"deepseek-thinking",attachment:false,reasoning:true,tool_call:true,temperature:true,knowledge:"2024-07",release_date:"2025-01-20",last_updated:"2025-05-29",modalities:{input:["text"],output:["text"]},open_weights:true,limit:{context:128e3,output:32768},weights:[{label:"Hugging Face",url:"https://huggingface.co/deepseek-ai/DeepSeek-R1"}],benchmarks:[{name:"Aider Polyglot",score:56.9,metric:"percent correct",source:"https://aider.chat/docs/leaderboards/",date:"2025-01-20"},{name:"Artificial Analysis Coding Index",score:15.9,metric:"index",source:"https://openrouter.ai/deepseek/deepseek-r1/benchmarks",date:"2026-03-11"},{name:"SciCode",score:35.7,metric:"percent correct",source:"https://openrouter.ai/deepseek/deepseek-r1/benchmarks",date:"2026-03-11"},{name:"Terminal-Bench Hard",score:6.1,metric:"success rate",source:"https://openrouter.ai/deepseek/deepseek-r1/benchmarks",date:"2026-03-11"}]},"deepseek/deepseek-v4-pro":{id:"deepseek/deepseek-v4-pro",name:"DeepSeek V4 Pro",description:"Open MoE flagship with million-token context for coding and long agent runs",family:"deepseek-thinking",attachment:false,reasoning:true,tool_call:true,structured_output:true,temperature:true,knowledge:"2025-05",release_date:"2026-04-24",last_updated:"2026-04-24",modalities:{input:["text"],output:["text"]},open_weights:true,limit:{context:1e6,output:384e3},weights:[{label:"Hugging Face",url:"https://huggingface.co/deepseek-ai/DeepSeek-V4-Pro"}],benchmarks:[{name:"SWE-Bench Verified",score:80.6,metric:"resolved",source:"https://huggingface.co/deepseek-ai/DeepSeek-V4-Pro"},{name:"Artificial Analysis Coding Agent Index",score:50.1,metric:"average pass@1",harness:"Claude Code",variant:"high",source:"https://artificialanalysis.ai/agents/coding-agents"},{name:"SWE-Atlas Codebase QnA",score:67.8,metric:"pass@1",harness:"Claude Code",variant:"high",source:"https://artificialanalysis.ai/agents/coding-agents"},{name:"SWE-Bench Pro",score:18,metric:"pass@1",harness:"Claude Code",variant:"high",dataset:"hard-aa",source:"https://artificialanalysis.ai/agents/coding-agents"},{name:"Terminal-Bench",score:64.7,metric:"pass@1",harness:"Claude Code",variant:"high",version:"2.1",source:"https://artificialanalysis.ai/agents/coding-agents"},{name:"MMLU-Pro",score:87.5,metric:"EM",variant:"preview checkpoint; max effort",source:"https://huggingface.co/deepseek-ai/DeepSeek-V4-Pro"},{name:"SimpleQA-Verified",score:57.9,metric:"pass@1",variant:"preview checkpoint; max effort",source:"https://huggingface.co/deepseek-ai/DeepSeek-V4-Pro"},{name:"Chinese SimpleQA",score:84.4,metric:"pass@1",variant:"preview checkpoint; max effort",source:"https://huggingface.co/deepseek-ai/DeepSeek-V4-Pro"},{name:"GPQA Diamond",score:90.1,metric:"pass@1",variant:"preview checkpoint; max effort",source:"https://huggingface.co/deepseek-ai/DeepSeek-V4-Pro"},{name:"Humanity's Last Exam",score:37.7,metric:"pass@1",variant:"preview checkpoint; max effort; without tools",source:"https://huggingface.co/deepseek-ai/DeepSeek-V4-Pro"},{name:"LiveCodeBench",score:93.5,metric:"pass@1",variant:"preview checkpoint; max effort",source:"https://huggingface.co/deepseek-ai/DeepSeek-V4-Pro"},{name:"Codeforces",score:3206,metric:"rating",variant:"preview checkpoint; max effort",source:"https://huggingface.co/deepseek-ai/DeepSeek-V4-Pro"},{name:"HMMT",score:95.2,metric:"pass@1",variant:"preview checkpoint; max effort",dataset:"February 2026",source:"https://huggingface.co/deepseek-ai/DeepSeek-V4-Pro"},{name:"IMOAnswerBench",score:89.8,metric:"pass@1",variant:"preview checkpoint; max effort",source:"https://huggingface.co/deepseek-ai/DeepSeek-V4-Pro"},{name:"MathArena Apex",score:38.3,metric:"pass@1",variant:"preview checkpoint; max effort",source:"https://huggingface.co/deepseek-ai/DeepSeek-V4-Pro"},{name:"MathArena Apex Shortlist",score:90.2,metric:"pass@1",variant:"preview checkpoint; max effort",source:"https://huggingface.co/deepseek-ai/DeepSeek-V4-Pro"},{name:"MRCR",score:83.5,metric:"MMR",variant:"preview checkpoint; max effort",dataset:"1M context",source:"https://huggingface.co/deepseek-ai/DeepSeek-V4-Pro"},{name:"CorpusQA",score:62,metric:"accuracy",variant:"preview checkpoint; max effort",dataset:"1M context",source:"https://huggingface.co/deepseek-ai/DeepSeek-V4-Pro"},{name:"Terminal-Bench",score:67.9,metric:"accuracy",variant:"preview checkpoint; max effort",version:"2.0",source:"https://huggingface.co/deepseek-ai/DeepSeek-V4-Pro"},{name:"SWE-Bench Pro",score:55.4,metric:"resolved",variant:"preview checkpoint; max effort",source:"https://huggingface.co/deepseek-ai/DeepSeek-V4-Pro"},{name:"SWE-Bench Multilingual",score:76.2,metric:"resolved",variant:"preview checkpoint; max effort",source:"https://huggingface.co/deepseek-ai/DeepSeek-V4-Pro"},{name:"BrowseComp",score:83.4,metric:"pass@1",variant:"preview checkpoint; max effort",source:"https://huggingface.co/deepseek-ai/DeepSeek-V4-Pro"},{name:"Humanity's Last Exam",score:48.2,metric:"pass@1",variant:"preview checkpoint; max effort; with tools",source:"https://huggingface.co/deepseek-ai/DeepSeek-V4-Pro"},{name:"MCP Atlas",score:73.6,metric:"pass@1",variant:"preview checkpoint; max effort",dataset:"public",source:"https://huggingface.co/deepseek-ai/DeepSeek-V4-Pro"},{name:"GDPval-AA",score:1554,metric:"Elo",variant:"preview checkpoint; max effort",source:"https://huggingface.co/deepseek-ai/DeepSeek-V4-Pro"},{name:"Toolathlon",score:51.8,metric:"pass@1",variant:"preview checkpoint; max effort",source:"https://huggingface.co/deepseek-ai/DeepSeek-V4-Pro"}]},"deepseek/deepseek-v3.2":{id:"deepseek/deepseek-v3.2",name:"DeepSeek V3.2",description:"Hybrid-reasoning DeepSeek model with thinking and non-thinking modes, sparse attention, and tool-use",family:"deepseek",attachment:false,reasoning:true,tool_call:true,structured_output:true,temperature:true,knowledge:"2024-07",release_date:"2025-12-01",last_updated:"2025-12-01",modalities:{input:["text"],output:["text"]},open_weights:true,limit:{context:128e3,output:64e3},license:"MIT License",weights:[{label:"Hugging Face",url:"https://huggingface.co/deepseek-ai/DeepSeek-V3.2"}]},"deepseek/deepseek-v4-flash":{id:"deepseek/deepseek-v4-flash",name:"DeepSeek V4 Flash",description:"Fast DeepSeek V4 lane for economical reasoning, coding, and long-context work",family:"deepseek-flash",attachment:false,reasoning:true,tool_call:true,structured_output:true,temperature:true,knowledge:"2025-05",release_date:"2026-04-24",last_updated:"2026-04-24",modalities:{input:["text"],output:["text"]},open_weights:true,limit:{context:1e6,output:384e3},weights:[{label:"Hugging Face",url:"https://huggingface.co/deepseek-ai/DeepSeek-V4-Flash"}],benchmarks:[{name:"SWE-Bench Verified",score:79,metric:"resolved",source:"https://huggingface.co/deepseek-ai/DeepSeek-V4-Flash"},{name:"MMLU-Pro",score:86.2,metric:"EM",variant:"preview checkpoint; max effort",source:"https://huggingface.co/deepseek-ai/DeepSeek-V4-Flash"},{name:"SimpleQA-Verified",score:34.1,metric:"pass@1",variant:"preview checkpoint; max effort",source:"https://huggingface.co/deepseek-ai/DeepSeek-V4-Flash"},{name:"Chinese SimpleQA",score:78.9,metric:"pass@1",variant:"preview checkpoint; max effort",source:"https://huggingface.co/deepseek-ai/DeepSeek-V4-Flash"},{name:"GPQA Diamond",score:88.1,metric:"pass@1",variant:"preview checkpoint; max effort",source:"https://huggingface.co/deepseek-ai/DeepSeek-V4-Flash"},{name:"Humanity's Last Exam",score:34.8,metric:"pass@1",variant:"preview checkpoint; max effort; without tools",source:"https://huggingface.co/deepseek-ai/DeepSeek-V4-Flash"},{name:"LiveCodeBench",score:91.6,metric:"pass@1",variant:"preview checkpoint; max effort",source:"https://huggingface.co/deepseek-ai/DeepSeek-V4-Flash"},{name:"Codeforces",score:3052,metric:"rating",variant:"preview checkpoint; max effort",source:"https://huggingface.co/deepseek-ai/DeepSeek-V4-Flash"},{name:"HMMT",score:94.8,metric:"pass@1",variant:"preview checkpoint; max effort",dataset:"February 2026",source:"https://huggingface.co/deepseek-ai/DeepSeek-V4-Flash"},{name:"IMOAnswerBench",score:88.4,metric:"pass@1",variant:"preview checkpoint; max effort",source:"https://huggingface.co/deepseek-ai/DeepSeek-V4-Flash"},{name:"MathArena Apex",score:33,metric:"pass@1",variant:"preview checkpoint; max effort",source:"https://huggingface.co/deepseek-ai/DeepSeek-V4-Flash"},{name:"MathArena Apex Shortlist",score:85.7,metric:"pass@1",variant:"preview checkpoint; max effort",source:"https://huggingface.co/deepseek-ai/DeepSeek-V4-Flash"},{name:"MRCR",score:78.7,metric:"MMR",variant:"preview checkpoint; max effort",dataset:"1M context",source:"https://huggingface.co/deepseek-ai/DeepSeek-V4-Flash"},{name:"CorpusQA",score:60.5,metric:"accuracy",variant:"preview checkpoint; max effort",dataset:"1M context",source:"https://huggingface.co/deepseek-ai/DeepSeek-V4-Flash"},{name:"Terminal-Bench",score:56.9,metric:"accuracy",variant:"preview checkpoint; max effort",version:"2.0",source:"https://huggingface.co/deepseek-ai/DeepSeek-V4-Flash"},{name:"SWE-Bench Pro",score:52.6,metric:"resolved",variant:"preview checkpoint; max effort",source:"https://huggingface.co/deepseek-ai/DeepSeek-V4-Flash"},{name:"SWE-Bench Multilingual",score:73.3,metric:"resolved",variant:"preview checkpoint; max effort",source:"https://huggingface.co/deepseek-ai/DeepSeek-V4-Flash"},{name:"BrowseComp",score:73.2,metric:"pass@1",variant:"preview checkpoint; max effort",source:"https://huggingface.co/deepseek-ai/DeepSeek-V4-Flash"},{name:"Humanity's Last Exam",score:45.1,metric:"pass@1",variant:"preview checkpoint; max effort; with tools",source:"https://huggingface.co/deepseek-ai/DeepSeek-V4-Flash"},{name:"MCP Atlas",score:69,metric:"pass@1",variant:"preview checkpoint; max effort",dataset:"public",source:"https://huggingface.co/deepseek-ai/DeepSeek-V4-Flash"},{name:"GDPval-AA",score:1395,metric:"Elo",variant:"preview checkpoint; max effort",source:"https://huggingface.co/deepseek-ai/DeepSeek-V4-Flash"},{name:"Toolathlon",score:47.8,metric:"pass@1",variant:"preview checkpoint; max effort",source:"https://huggingface.co/deepseek-ai/DeepSeek-V4-Flash"}]},"quiverai/arrow-2":{id:"quiverai/arrow-2",name:"Arrow 2",description:"Fast SVG generation model for creation, vectorization, editing, and animation",attachment:true,reasoning:true,tool_call:true,release_date:"2026-09-16",last_updated:"2026-09-16",modalities:{input:["text","image"],output:["text","image"]},open_weights:false,limit:{context:131072,output:65536}},"quiverai/arrow-2-telos":{id:"quiverai/arrow-2-telos",name:"Arrow 2 Telos",description:"High-fidelity SVG generation model for complex vector work and long-context refinement",attachment:true,reasoning:true,tool_call:true,release_date:"2026-09-16",last_updated:"2026-09-16",modalities:{input:["text","image"],output:["text","image"]},open_weights:false,limit:{context:105e4,output:65536}},"unbiased/pareto":{id:"unbiased/pareto",name:"Pareto",description:"Blended multimodal model that runs multiple language models in parallel and returns a synthesized answer",attachment:true,reasoning:false,tool_call:true,structured_output:false,temperature:true,release_date:"2026-09-17",last_updated:"2026-09-17",modalities:{input:["text","image"],output:["text"]},open_weights:false,limit:{context:262144,output:131072}},"openbmb/minicpm5-2b":{id:"openbmb/minicpm5-2b",name:"MiniCPM5-2B",description:"Dense 2B-class open-source model for on-device and resource-constrained use, with native long-context support, tool calling, and agentic tasks",attachment:false,reasoning:true,tool_call:true,temperature:true,release_date:"2026-09-06",last_updated:"2026-09-12",modalities:{input:["text"],output:["text"]},open_weights:true,limit:{context:131072,output:131072},license:"apache-2.0",weights:[{label:"Hugging Face",url:"https://huggingface.co/openbmb/MiniCPM5-2B"}]},"openbmb/minicpm5-1b":{id:"openbmb/minicpm5-1b",name:"MiniCPM5-1B",description:"Dense 1B-class open-source model for on-device and resource-constrained use, with native long-context support, Think / No Think chat modes, and tool calling",attachment:false,reasoning:true,tool_call:true,temperature:true,release_date:"2026-05-19",last_updated:"2026-05-19",modalities:{input:["text"],output:["text"]},open_weights:true,limit:{context:131072,output:131072},license:"apache-2.0",weights:[{label:"Hugging Face",url:"https://huggingface.co/openbmb/MiniCPM5-1B"}]},"tencent/hy3-preview":{id:"tencent/hy3-preview",name:"Hy3 preview",description:"Tencent Hy reasoning model for coding, instruction following, and agent tasks",family:"Hy",attachment:false,reasoning:true,tool_call:true,temperature:true,release_date:"2026-04-20",last_updated:"2026-04-20",modalities:{input:["text"],output:["text"]},open_weights:true,limit:{context:256e3,output:64e3},weights:[{label:"Hugging Face",url:"https://huggingface.co/tencent/Hy3-preview"}],benchmarks:[{name:"SWE-Bench Verified",score:74.4,metric:"resolved",source:"https://huggingface.co/tencent/Hy3-preview"}]},"tencent/hy3":{id:"tencent/hy3",name:"Hy3",description:"Tencent Hy reasoning model for coding, instruction following, and agent tasks",family:"Hy",attachment:false,reasoning:true,tool_call:true,temperature:true,release_date:"2026-07-06",last_updated:"2026-07-06",modalities:{input:["text"],output:["text"]},open_weights:true,limit:{context:256e3,input:192e3,output:128e3},weights:[{label:"Hugging Face",url:"https://huggingface.co/tencent/Hy3"}],benchmarks:[{name:"SWE-Bench Verified",score:78,metric:"resolved",source:"https://huggingface.co/tencent/Hy3"},{name:"SWE-Bench Multilingual",score:75.8,metric:"score",harness:"SWE-agent",variant:"highest reasoning effort",source:"https://huggingface.co/tencent/Hy3"},{name:"SWE-Bench Pro",score:57.9,metric:"score",harness:"SWE-agent",variant:"highest reasoning effort",source:"https://huggingface.co/tencent/Hy3"},{name:"Terminal-Bench",score:71.7,metric:"score",harness:"Terminus 2",variant:"highest reasoning effort; 4h timeout; 500 episodes",version:"2.1",source:"https://huggingface.co/tencent/Hy3"},{name:"NL2Repo",score:45.6,metric:"score",harness:"Claude Code",variant:"highest reasoning effort; 250 turns; 12000s timeout",source:"https://huggingface.co/tencent/Hy3"},{name:"DeepSWE",score:28,metric:"score",harness:"mini-swe-agent",variant:"highest reasoning effort; 2h timeout",source:"https://huggingface.co/tencent/Hy3"},{name:"BrowseComp",score:84.2,metric:"score",harness:"Tencent internal search harness",variant:"highest reasoning effort",source:"https://huggingface.co/tencent/Hy3"},{name:"WideSearch",score:76.4,metric:"score",harness:"Tencent internal search harness",variant:"highest reasoning effort",source:"https://huggingface.co/tencent/Hy3"},{name:"DeepSearchQA",score:91,metric:"score",harness:"Tencent internal search harness",variant:"highest reasoning effort",source:"https://huggingface.co/tencent/Hy3"},{name:"MCP Atlas",score:79.1,metric:"score",harness:"Scale AI",variant:"highest reasoning effort; April 2026; 100 tool calls",dataset:"500 public tasks",source:"https://huggingface.co/tencent/Hy3"},{name:"Toolathlon",score:48.5,metric:"score",variant:"highest reasoning effort",source:"https://huggingface.co/tencent/Hy3"},{name:"APEX-Agents",score:25.6,metric:"pass@1",variant:"highest reasoning effort",source:"https://huggingface.co/tencent/Hy3"},{name:"ClawEval",score:68.5,metric:"pass@3",harness:"Tencent internal harness",variant:"highest reasoning effort",dataset:"105 queries",version:"20260325",source:"https://huggingface.co/tencent/Hy3"},{name:"WildClawBench",score:53.6,metric:"score",harness:"OpenClaw",variant:"highest reasoning effort",dataset:"35 text-only tasks",source:"https://huggingface.co/tencent/Hy3"},{name:"SkillsBench",score:55.3,metric:"average over 3 runs",harness:"Claude Code",variant:"highest reasoning effort",dataset:"79 text-only tasks",source:"https://huggingface.co/tencent/Hy3"},{name:"Humanity's Last Exam",score:53.2,metric:"score",variant:"highest reasoning effort; with tools",dataset:"text-only",source:"https://huggingface.co/tencent/Hy3"},{name:"Humanity's Last Exam",score:37,metric:"score",variant:"highest reasoning effort; without tools",dataset:"text-only",source:"https://huggingface.co/tencent/Hy3"},{name:"GPQA Diamond",score:90.4,metric:"score",variant:"highest reasoning effort",source:"https://huggingface.co/tencent/Hy3"},{name:"FrontierScience",score:21.3,metric:"score",variant:"highest reasoning effort; research",source:"https://huggingface.co/tencent/Hy3"},{name:"FrontierScience",score:74.8,metric:"score",variant:"highest reasoning effort; olympiad",source:"https://huggingface.co/tencent/Hy3"},{name:"USAMO",score:72,metric:"score",variant:"highest reasoning effort",version:"2026",source:"https://huggingface.co/tencent/Hy3"},{name:"MathArena Apex",score:38.7,metric:"score",variant:"highest reasoning effort",source:"https://huggingface.co/tencent/Hy3"},{name:"ArxivMath",score:52.2,metric:"score",variant:"highest reasoning effort",source:"https://huggingface.co/tencent/Hy3"},{name:"HorizonMath",score:7.1,metric:"pass@12",variant:"highest reasoning effort",source:"https://huggingface.co/tencent/Hy3"},{name:"PHYBench",score:77.4,metric:"score",variant:"highest reasoning effort",source:"https://huggingface.co/tencent/Hy3"},{name:"CMT Benchmark",score:37.8,metric:"score",variant:"highest reasoning effort",source:"https://huggingface.co/tencent/Hy3"},{name:"IMOAnswerBench",score:90,metric:"score",variant:"highest reasoning effort",source:"https://huggingface.co/tencent/Hy3"},{name:"SuperChem",score:54.9,metric:"score",variant:"highest reasoning effort",source:"https://huggingface.co/tencent/Hy3"},{name:"CL-bench",score:23.8,metric:"score",variant:"highest reasoning effort",source:"https://huggingface.co/tencent/Hy3"},{name:"CL-bench-life",score:17,metric:"score",variant:"highest reasoning effort",source:"https://huggingface.co/tencent/Hy3"},{name:"AA-LCR",score:73.4,metric:"score",variant:"highest reasoning effort",source:"https://huggingface.co/tencent/Hy3"}]},"tencent/hy4-preview":{id:"tencent/hy4-preview",name:"Hy4 preview",description:"A next-generation productivity model with significantly enhanced Agent and complex task execution capabilities.",family:"Hy",attachment:false,reasoning:true,tool_call:true,temperature:true,release_date:"2026-08-28",last_updated:"2026-08-28",modalities:{input:["text"],output:["text"]},open_weights:true,limit:{context:1024e3,output:64e3}},"ai21/jamba-large":{id:"ai21/jamba-large",name:"Jamba Large",description:"AI21's hybrid SSM-Transformer long-context model for enterprise agents and grounded generation",family:"jamba",attachment:false,reasoning:false,tool_call:true,structured_output:true,temperature:true,knowledge:"2024-08-22",release_date:"2025-07-01",last_updated:"2025-07-01",modalities:{input:["text"],output:["text"]},open_weights:true,limit:{context:256e3,output:4096},weights:[{label:"Hugging Face",url:"https://huggingface.co/ai21labs/AI21-Jamba-Large-1.6"}]},"ai21/jamba-mini":{id:"ai21/jamba-mini",name:"Jamba Mini",description:"AI21's efficient, lightweight hybrid SSM-Transformer model for a wide range of tasks",family:"jamba",attachment:false,reasoning:false,tool_call:true,structured_output:true,temperature:true,knowledge:"2024-08-22",release_date:"2026-01-01",last_updated:"2026-01-01",modalities:{input:["text"],output:["text"]},open_weights:true,limit:{context:256e3,output:4096},weights:[{label:"Hugging Face",url:"https://huggingface.co/ai21labs/AI21-Jamba-Mini-1.6"}]},"thinkingmachines/inkling-small":{id:"thinkingmachines/inkling-small",name:"Inkling Small",description:"Multimodal MoE reasoning model (276B total, 12B active) for text, image, and audio",family:"ling",attachment:true,reasoning:true,tool_call:true,temperature:true,release_date:"2026-07-30",last_updated:"2026-07-30",modalities:{input:["text","image","audio"],output:["text"]},open_weights:true,limit:{context:1048576,output:1048576},license:"Apache-2.0",weights:[{label:"Hugging Face",url:"https://huggingface.co/thinkingmachines/Inkling-Small"}]},"thinkingmachines/inkling":{id:"thinkingmachines/inkling",name:"Inkling",description:"Multimodal MoE reasoning model (975B total, 41B active) for text, image, and audio",family:"ling",attachment:true,reasoning:true,tool_call:true,temperature:true,release_date:"2026-07-15",last_updated:"2026-07-15",modalities:{input:["text","image","audio"],output:["text"]},open_weights:true,limit:{context:1048576,output:1048576},license:"Apache-2.0",weights:[{label:"Hugging Face",url:"https://huggingface.co/thinkingmachines/Inkling"}]},"sarvam/sarvam-30b":{id:"sarvam/sarvam-30b",name:"Sarvam 30B",description:"Efficient Indian-language reasoning model for chat, coding, and multilingual work",family:"sarvam",attachment:false,reasoning:true,tool_call:true,temperature:true,release_date:"2026-02-18",last_updated:"2026-02-18",modalities:{input:["text"],output:["text"]},open_weights:true,limit:{context:128e3,output:128e3}},"sarvam/sarvam-105b":{id:"sarvam/sarvam-105b",name:"Sarvam 105B",description:"Flagship Indian-language reasoning model for enterprise multilingual applications",family:"sarvam",attachment:false,reasoning:true,tool_call:true,temperature:true,release_date:"2025-09-01",last_updated:"2025-09-01",modalities:{input:["text"],output:["text"]},open_weights:true,limit:{context:131072,output:131072}},"meituan/longcat-2.0":{id:"meituan/longcat-2.0",name:"LongCat-2.0",description:"Meituan LongCat-2.0, a reasoning model with tool calling and a 1M-token context window",family:"longcat",attachment:false,reasoning:true,tool_call:true,temperature:true,release_date:"2026-06-30",last_updated:"2026-06-30",modalities:{input:["text"],output:["text"]},open_weights:false,limit:{context:1e6,output:131072},benchmarks:[{name:"SWE-Bench Pro",score:59.5,metric:"resolve rate",source:"https://github.com/meituan-longcat/longcat-2.0",date:"2026-06-30"},{name:"SWE-Bench Multilingual",score:77.3,metric:"resolve rate",source:"https://github.com/meituan-longcat/longcat-2.0",date:"2026-06-30"},{name:"Terminal-Bench",score:70.8,metric:"success rate",version:"2.1",source:"https://github.com/meituan-longcat/longcat-2.0",date:"2026-06-30"},{name:"GPQA Diamond",score:88.9,metric:"accuracy",source:"https://github.com/meituan-longcat/longcat-2.0",date:"2026-06-30"},{name:"BrowseComp",score:79.9,metric:"accuracy",source:"https://github.com/meituan-longcat/longcat-2.0",date:"2026-06-30"},{name:"IFEval",score:90,metric:"accuracy",source:"https://github.com/meituan-longcat/longcat-2.0",date:"2026-06-30"},{name:"FORTE",score:73.2,metric:"success rate",source:"https://github.com/meituan-longcat/longcat-2.0",date:"2026-06-30"}]},"meituan/longcat-2.5-preview":{id:"meituan/longcat-2.5-preview",name:"LongCat-2.5-Preview",description:"Meituan's multimodal reasoning model for coding and agent tasks, with image understanding and a 1M-token context window",family:"longcat",attachment:true,reasoning:true,tool_call:true,temperature:true,release_date:"2026-09-25",last_updated:"2026-09-25",modalities:{input:["text","image"],output:["text"]},open_weights:false,limit:{context:1e6,output:131072}},"perplexity/sonar-pro":{id:"perplexity/sonar-pro",name:"Sonar Pro",description:"Deeper Sonar search model with broader retrieval and stronger synthesis",family:"sonar-pro",attachment:true,reasoning:false,tool_call:false,temperature:true,knowledge:"2025-09-01",release_date:"2024-01-01",last_updated:"2025-09-01",modalities:{input:["text","image"],output:["text"]},open_weights:false,limit:{context:2e5,output:8192},benchmarks:[{name:"SciCode",score:22.6,metric:"percent correct",source:"https://openrouter.ai/perplexity/sonar-pro/benchmarks",date:"2026-03-11"}]},"perplexity/sonar-deep-research":{id:"perplexity/sonar-deep-research",name:"Sonar Deep Research",description:"Sonar search model for autonomous research and citation-backed long-form reports",family:"sonar",attachment:false,reasoning:true,tool_call:false,temperature:false,knowledge:"2025-01",release_date:"2025-02-01",last_updated:"2025-09-01",modalities:{input:["text"],output:["text"]},open_weights:false,limit:{context:128e3,output:32768}},"perplexity/sonar":{id:"perplexity/sonar",name:"Sonar",description:"Fast web-grounded Sonar for current answers, citations, and lightweight retrieval",family:"sonar",attachment:false,reasoning:false,tool_call:false,temperature:true,knowledge:"2025-09-01",release_date:"2024-01-01",last_updated:"2025-09-01",modalities:{input:["text"],output:["text"]},open_weights:false,limit:{context:128e3,output:4096},benchmarks:[{name:"SciCode",score:22.9,metric:"percent correct",source:"https://openrouter.ai/perplexity/sonar/benchmarks",date:"2026-03-11"}]},"perplexity/sonar-reasoning-pro":{id:"perplexity/sonar-reasoning-pro",name:"Sonar Reasoning Pro",description:"Web-grounded Sonar for multi-step research questions that need cited reasoning",family:"sonar-reasoning",attachment:true,reasoning:true,tool_call:false,temperature:true,knowledge:"2025-09-01",release_date:"2024-01-01",last_updated:"2025-09-01",modalities:{input:["text","image"],output:["text"]},open_weights:false,limit:{context:128e3,output:4096}},"meta/muse-spark-1.3":{id:"meta/muse-spark-1.3",name:"Muse Spark 1.3",description:"Muse Spark 1.3 is a multimodal reasoning model from Meta for long-running agentic, multi-agent, and coding workflows. It improves long-horizon agent collaboration, instruction following, and coding efficiency relative to Muse Spark 1.2.",family:"muse",attachment:true,reasoning:true,tool_call:true,structured_output:true,temperature:true,release_date:"2026-09-02",last_updated:"2026-09-02",modalities:{input:["text","image","video","pdf","audio"],output:["text"]},open_weights:false,limit:{context:1048576,output:131072},benchmarks:[{name:"GDPval-AA",score:1754,metric:"Elo",harness:"Stirrup",variant:"max effort",version:"2",source:"https://research.meta.ai/blog/introducing-muse-spark-1-3",date:"2026-09-02"},{name:"JobBench",score:64.9,metric:"mean rubric score",harness:"OpenCode",variant:"max effort",source:"https://research.meta.ai/blog/introducing-muse-spark-1-3",date:"2026-09-02"},{name:"OSWorld",score:66.9,metric:"mean partial score",harness:"Meta internal evaluation framework",variant:"max effort",dataset:"08.08",version:"2.0",source:"https://research.meta.ai/blog/introducing-muse-spark-1-3",date:"2026-09-02"},{name:"OSWorld",score:32,metric:"binary completion rate",harness:"Meta internal evaluation framework",variant:"max effort",dataset:"08.08",version:"2.0",source:"https://research.meta.ai/blog/introducing-muse-spark-1-3",date:"2026-09-02"},{name:"DeepSearchQA",score:90.3,metric:"F1",harness:"Meta browser harness",variant:"max effort",source:"https://research.meta.ai/blog/introducing-muse-spark-1-3",date:"2026-09-02"},{name:"Agentic IF Index",score:57.8,metric:"score",variant:"max effort",dataset:"Meta internal",source:"https://research.meta.ai/blog/introducing-muse-spark-1-3",date:"2026-09-02"},{name:"AutomationBench",score:49.6,metric:"pass@1",variant:"max effort",dataset:"public v3 task set",source:"https://research.meta.ai/blog/introducing-muse-spark-1-3",date:"2026-09-02"},{name:"MRCR",score:98.5,metric:"mean sequence-match ratio",variant:"max effort",dataset:"8-needle, 256K-512K",version:"2",source:"https://research.meta.ai/blog/introducing-muse-spark-1-3",date:"2026-09-02"},{name:"MRCR",score:98.1,metric:"mean sequence-match ratio",variant:"max effort",dataset:"8-needle, 512K-1M",version:"2",source:"https://research.meta.ai/blog/introducing-muse-spark-1-3",date:"2026-09-02"},{name:"DeepSWE",score:75.4,metric:"pass@1",harness:"mini-swe-agent",variant:"max effort",version:"1.1",source:"https://research.meta.ai/blog/introducing-muse-spark-1-3",date:"2026-09-02"},{name:"SWE-Atlas Codebase QnA",score:59.4,metric:"pass@1",harness:"mini-swe-agent",variant:"max effort",source:"https://research.meta.ai/blog/introducing-muse-spark-1-3",date:"2026-09-02"},{name:"Terminal-Bench",score:88.8,metric:"pass@1",harness:"Muse Code",variant:"max effort",version:"2.1",source:"https://research.meta.ai/blog/introducing-muse-spark-1-3",date:"2026-09-02"}]},"meta/muse-glimmer-30b":{id:"meta/muse-glimmer-30b",name:"Muse Glimmer 30B",description:"Muse Glimmer is a 30-billion-parameter open-weight multimodal model from Meta Superintelligence Labs, distilled from Muse Spark for always-on local agents, tool use, coding, and image understanding.",family:"muse",attachment:true,reasoning:true,tool_call:true,structured_output:true,temperature:true,knowledge:"2026-01-04",release_date:"2026-08-10",last_updated:"2026-08-10",modalities:{input:["text","image"],output:["text"]},open_weights:true,limit:{context:131072,output:131072},license:"Apache 2.0",links:[{label:"Announcement",url:"https://research.meta.ai/blog/introducing-muse-glimmer-open-agentic-model",type:"announcement"},{label:"Model card",url:"https://huggingface.co/meta-models/Muse-Glimmer-30B",type:"model_card"},{label:"Developer docs",url:"https://developer.meta.com/ai/models/muse-glimmer/",type:"docs"}],weights:[{label:"Hugging Face",url:"https://huggingface.co/meta-models/Muse-Glimmer-30B"}],benchmarks:[{name:"MCP Atlas",score:75.5,metric:"success rate",variant:"public",source:"https://huggingface.co/meta-models/Muse-Glimmer-30B",date:"2026-08-10"},{name:"DeepSearch QA",score:74.6,source:"https://huggingface.co/meta-models/Muse-Glimmer-30B",date:"2026-08-10"},{name:"SWE-Bench Pro",score:51.2,metric:"resolve rate",source:"https://huggingface.co/meta-models/Muse-Glimmer-30B",date:"2026-08-10"},{name:"SWE-Bench Verified",score:76,metric:"resolve rate",source:"https://huggingface.co/meta-models/Muse-Glimmer-30B",date:"2026-08-10"},{name:"Terminal-Bench",score:51.7,metric:"success rate",variant:"with terminus2",version:"2.1",source:"https://huggingface.co/meta-models/Muse-Glimmer-30B",date:"2026-08-10"},{name:"OSWorld-Verified",score:65.9,metric:"success rate",source:"https://huggingface.co/meta-models/Muse-Glimmer-30B",date:"2026-08-10"},{name:"AIME 2026",score:94.7,metric:"accuracy",source:"https://huggingface.co/meta-models/Muse-Glimmer-30B",date:"2026-08-10"},{name:"GPQA Diamond",score:83.5,metric:"accuracy",variant:"AA",source:"https://huggingface.co/meta-models/Muse-Glimmer-30B",date:"2026-08-10"},{name:"CharXiv Reasoning",score:78.8,metric:"accuracy",source:"https://huggingface.co/meta-models/Muse-Glimmer-30B",date:"2026-08-10"}]},"meta/llama-4-maverick-17b-instruct":{id:"meta/llama-4-maverick-17b-instruct",name:"Llama 4 Maverick 17B Instruct",description:"Open multimodal Llama for strong reasoning with efficient everyday serving",family:"llama",attachment:true,reasoning:false,tool_call:true,temperature:true,knowledge:"2024-08",release_date:"2025-04-05",last_updated:"2025-04-05",modalities:{input:["text","image"],output:["text"]},open_weights:true,limit:{context:1e6,output:16384},weights:[{label:"Hugging Face",url:"https://huggingface.co/meta-llama/Llama-4-Maverick-17B-128E-Instruct"}],benchmarks:[{name:"Aider Polyglot",score:15.6,metric:"percent correct",source:"https://aider.chat/docs/leaderboards/",date:"2025-04-06"},{name:"SWE-Bench Pro",score:5.24,metric:"resolve rate",dataset:"public",source:"https://labs.scale.com/leaderboard/swe_bench_pro_public"}]},"meta/muse-spark-1.1":{id:"meta/muse-spark-1.1",name:"Muse Spark 1.1",description:"Muse Spark is a natively multimodal reasoning model with support for tool-use, visual chain of thought, and multi-agent orchestration.",family:"muse",attachment:true,reasoning:true,tool_call:true,structured_output:true,temperature:true,release_date:"2026-04-08",last_updated:"2026-07-09",modalities:{input:["text","image","pdf","video"],output:["text"]},open_weights:false,limit:{context:1048576,output:131072},benchmarks:[{name:"SWE-Bench Pro",score:61.5,metric:"resolve rate",source:"https://ai.meta.com/blog/introducing-muse-spark-meta-model-api/",date:"2026-07-09"},{name:"Terminal-Bench",score:80,metric:"success rate",version:"2.1",source:"https://ai.meta.com/blog/introducing-muse-spark-meta-model-api/",date:"2026-07-09"},{name:"DeepSWE",score:53.3,metric:"resolve rate",version:"1.1",source:"https://ai.meta.com/blog/introducing-muse-spark-meta-model-api/",date:"2026-07-09"},{name:"MCP Atlas",score:88.1,metric:"success rate",source:"https://ai.meta.com/blog/introducing-muse-spark-meta-model-api/",date:"2026-07-09"},{name:"JobBench",score:54.7,metric:"success rate",source:"https://ai.meta.com/blog/introducing-muse-spark-meta-model-api/",date:"2026-07-09"},{name:"Toolathlon-Verified",score:75.6,metric:"success rate",source:"https://ai.meta.com/blog/introducing-muse-spark-meta-model-api/",date:"2026-07-09"},{name:"Humanity's Last Exam",score:62.1,metric:"accuracy",variant:"with tools",source:"https://ai.meta.com/blog/introducing-muse-spark-meta-model-api/",date:"2026-07-09"},{name:"OSWorld-Verified",score:80.8,metric:"success rate",source:"https://ai.meta.com/blog/introducing-muse-spark-meta-model-api/",date:"2026-07-09"},{name:"Finance Agent",score:57.2,metric:"accuracy",version:"v2",source:"https://ai.meta.com/blog/introducing-muse-spark-meta-model-api/",date:"2026-07-09"},{name:"CharXiv Reasoning",score:88.4,metric:"accuracy",source:"https://ai.meta.com/blog/introducing-muse-spark-meta-model-api/",date:"2026-07-09"},{name:"BabyVision",score:76.3,metric:"accuracy",source:"https://ai.meta.com/blog/introducing-muse-spark-meta-model-api/",date:"2026-07-09"}]},"meta/llama-4-scout-17b-instruct":{id:"meta/llama-4-scout-17b-instruct",name:"Llama 4 Scout 17B Instruct",description:"Open Llama with long-context vision for efficient multimodal agents",family:"llama",attachment:true,reasoning:false,tool_call:true,temperature:true,knowledge:"2024-08",release_date:"2025-04-05",last_updated:"2025-04-05",modalities:{input:["text","image"],output:["text"]},open_weights:true,limit:{context:1e7,output:16384},weights:[{label:"Hugging Face",url:"https://huggingface.co/meta-llama/Llama-4-Scout-17B-16E-Instruct"}]},"meta/llama-3.3-70b-instruct":{id:"meta/llama-3.3-70b-instruct",name:"Llama-3.3-70B-Instruct",description:"Popular open Llama workhorse for multilingual chat, coding, and self-hosting",family:"llama",attachment:false,reasoning:false,tool_call:true,temperature:true,knowledge:"2023-12",release_date:"2024-12-06",last_updated:"2024-12-06",modalities:{input:["text"],output:["text"]},open_weights:true,limit:{context:128e3,output:4096},weights:[{label:"Hugging Face",url:"https://huggingface.co/meta-llama/Llama-3.3-70B-Instruct"}],benchmarks:[{name:"Artificial Analysis Coding Index",score:10.7,metric:"index",source:"https://openrouter.ai/meta-llama/llama-3.3-70b-instruct/benchmarks",date:"2026-03-11"},{name:"SciCode",score:26,metric:"percent correct",source:"https://openrouter.ai/meta-llama/llama-3.3-70b-instruct/benchmarks",date:"2026-03-11"},{name:"Terminal-Bench Hard",score:3,metric:"success rate",source:"https://openrouter.ai/meta-llama/llama-3.3-70b-instruct/benchmarks",date:"2026-03-11"}]},"meta/muse-spark-1.2":{id:"meta/muse-spark-1.2",name:"Muse Spark 1.2",description:"Muse Spark 1.2 is a coding-focused update to Muse Spark 1.1 with improvements in code generation, complex debugging, codebase understanding, and end-to-end developer workflows.",family:"muse",attachment:true,reasoning:true,tool_call:true,structured_output:true,temperature:true,release_date:"2026-08-05",last_updated:"2026-08-05",modalities:{input:["text","image","video","pdf","audio"],output:["text"]},open_weights:false,limit:{context:1048576,output:131072},benchmarks:[{name:"GDPval-AA",score:1615,metric:"Elo",harness:"Stirrup",variant:"xhigh effort",version:"2",source:"https://research.meta.ai/blog/introducing-muse-spark-1-3",date:"2026-09-02"},{name:"JobBench",score:61.6,metric:"mean rubric score",harness:"OpenCode",variant:"xhigh effort",source:"https://research.meta.ai/blog/introducing-muse-spark-1-3",date:"2026-09-02"},{name:"OSWorld",score:47.6,metric:"mean partial score",harness:"Meta internal evaluation framework",variant:"xhigh effort",dataset:"06.24",version:"2.0",source:"https://research.meta.ai/blog/introducing-muse-spark-1-3",date:"2026-09-02"},{name:"OSWorld",score:17.9,metric:"binary completion rate",harness:"Meta internal evaluation framework",variant:"xhigh effort",dataset:"06.24",version:"2.0",source:"https://research.meta.ai/blog/introducing-muse-spark-1-3",date:"2026-09-02"},{name:"DeepSearchQA",score:85.9,metric:"F1",harness:"Meta browser harness",variant:"xhigh effort",source:"https://research.meta.ai/blog/introducing-muse-spark-1-3",date:"2026-09-02"},{name:"Agentic IF Index",score:46.2,metric:"score",variant:"xhigh effort",dataset:"Meta internal",source:"https://research.meta.ai/blog/introducing-muse-spark-1-3",date:"2026-09-02"},{name:"AutomationBench",score:38.2,metric:"pass@1",variant:"xhigh effort",dataset:"public v3 task set",source:"https://research.meta.ai/blog/introducing-muse-spark-1-3",date:"2026-09-02"},{name:"MRCR",score:66.3,metric:"mean sequence-match ratio",variant:"xhigh effort",dataset:"8-needle, 256K-512K",version:"2",source:"https://research.meta.ai/blog/introducing-muse-spark-1-3",date:"2026-09-02"},{name:"MRCR",score:55.5,metric:"mean sequence-match ratio",variant:"xhigh effort",dataset:"8-needle, 512K-1M",version:"2",source:"https://research.meta.ai/blog/introducing-muse-spark-1-3",date:"2026-09-02"},{name:"DeepSWE",score:55,metric:"pass@1",harness:"mini-swe-agent",variant:"xhigh effort",version:"1.1",source:"https://research.meta.ai/blog/introducing-muse-spark-1-3",date:"2026-09-02"},{name:"SWE-Atlas Codebase QnA",score:46.2,metric:"pass@1",harness:"mini-swe-agent",variant:"xhigh effort",source:"https://research.meta.ai/blog/introducing-muse-spark-1-3",date:"2026-09-02"},{name:"Terminal-Bench",score:82.9,metric:"pass@1",harness:"Muse Code",variant:"xhigh effort",version:"2.1",source:"https://research.meta.ai/blog/introducing-muse-spark-1-3",date:"2026-09-02"},{name:"DeepSWE",score:59.3,metric:"pass@1",harness:"Muse Code",variant:"xhigh effort",version:"1.1",source:"https://research.meta.ai/blog/introducing-muse-code-and-muse-spark-1-2",date:"2026-08-05"},{name:"MCP Atlas",score:90.3,metric:"pass rate",harness:"Scale AI",variant:"xhigh effort",source:"https://research.meta.ai/blog/introducing-muse-code-and-muse-spark-1-2",date:"2026-08-05"}]},"meta/llama-guard-3-8b":{id:"meta/llama-guard-3-8b",name:"Llama-Guard-3-8B",description:"Llama 3.1-based safety classifier for moderating prompts and model responses",family:"llama",attachment:false,reasoning:false,tool_call:false,temperature:true,knowledge:"2023-12",release_date:"2024-07-23",last_updated:"2024-07-23",modalities:{input:["text"],output:["text"]},open_weights:true,limit:{context:128e3,output:4096},weights:[{label:"Hugging Face",url:"https://huggingface.co/meta-llama/Llama-Guard-3-8B"}]},"meta/llama-3.1-8b-instruct":{id:"meta/llama-3.1-8b-instruct",name:"Llama-3.1-8B-Instruct",description:"Compact open Llama model for lightweight chat, drafting, and self-hosting",family:"llama",attachment:false,reasoning:false,tool_call:true,temperature:true,knowledge:"2023-12",release_date:"2024-07-23",last_updated:"2024-07-23",modalities:{input:["text"],output:["text"]},open_weights:true,limit:{context:128e3,output:4096},weights:[{label:"Hugging Face",url:"https://huggingface.co/meta-llama/Llama-3.1-8B-Instruct"}]},"meta/llama-3.2-1b":{id:"meta/llama-3.2-1b",name:"Llama-3.2-1B",description:"Compact open Llama base model for lightweight and on-device use",family:"llama",attachment:false,reasoning:false,tool_call:false,temperature:true,knowledge:"2023-12",release_date:"2024-09-25",last_updated:"2024-09-25",modalities:{input:["text"],output:["text"]},open_weights:true,limit:{context:131072,output:8192},license:"Llama 3.2 Community License",weights:[{label:"Hugging Face",url:"https://huggingface.co/meta-llama/Llama-3.2-1B"}]},"meta/llama-3.2-11b-vision-instruct":{id:"meta/llama-3.2-11b-vision-instruct",name:"Llama-3.2-11B-Vision-Instruct",description:"Open multimodal Llama model for image understanding, captioning, and visual QA",family:"llama",attachment:true,reasoning:false,tool_call:true,temperature:true,knowledge:"2023-12",release_date:"2024-09-25",last_updated:"2024-09-25",modalities:{input:["text","image"],output:["text"]},open_weights:true,limit:{context:128e3,output:4096},weights:[{label:"Hugging Face",url:"https://huggingface.co/meta-llama/Llama-3.2-11B-Vision-Instruct"}]},"meta/llama-3.2-3b":{id:"meta/llama-3.2-3b",name:"Llama-3.2-3B",description:"Small open Llama base model for lightweight text generation and self-hosting",family:"llama",attachment:false,reasoning:false,tool_call:false,temperature:true,knowledge:"2023-12",release_date:"2024-09-25",last_updated:"2024-09-25",modalities:{input:["text"],output:["text"]},open_weights:true,limit:{context:131072,output:8192},license:"Llama 3.2 Community License",weights:[{label:"Hugging Face",url:"https://huggingface.co/meta-llama/Llama-3.2-3B"}]},"meta/llama-3.1-70b-instruct":{id:"meta/llama-3.1-70b-instruct",name:"Llama-3.1-70B-Instruct",description:"Open Llama instruction model for multilingual chat, reasoning, and coding",family:"llama",attachment:false,reasoning:false,tool_call:true,temperature:true,knowledge:"2023-12",release_date:"2024-07-23",last_updated:"2024-07-23",modalities:{input:["text"],output:["text"]},open_weights:true,limit:{context:128e3,output:4096},weights:[{label:"Hugging Face",url:"https://huggingface.co/meta-llama/Llama-3.1-70B-Instruct"}]},"arcee-ai/trinity-large-preview":{id:"arcee-ai/trinity-large-preview",name:"Trinity Large Preview",description:"Lightly post-trained 398B MoE chat model for creative work, long-context prompts, and tool-using agents",family:"trinity",attachment:false,reasoning:false,tool_call:true,temperature:true,release_date:"2026-01-27",last_updated:"2026-05-28",modalities:{input:["text"],output:["text"]},open_weights:true,limit:{context:524288,output:262144},license:"OpenMDW-1.1",links:[{label:"Model card",url:"https://huggingface.co/arcee-ai/Trinity-Large-Preview",type:"model_card"},{label:"Announcement",url:"https://www.arcee.ai/blog/trinity-large",type:"announcement"},{label:"License",url:"https://huggingface.co/arcee-ai/Trinity-Large-Preview/blob/main/LICENSE",type:"license"}],weights:[{label:"Hugging Face",url:"https://huggingface.co/arcee-ai/Trinity-Large-Preview",format:"safetensors"}]},"arcee-ai/trinity-large-thinking":{id:"arcee-ai/trinity-large-thinking",name:"Trinity Large Thinking",description:"Reasoning-optimized 398B MoE agent model with extended thinking for long-horizon and multi-turn tool use",family:"trinity",attachment:false,reasoning:true,tool_call:true,temperature:true,release_date:"2026-04-01",last_updated:"2026-05-28",modalities:{input:["text"],output:["text"]},open_weights:true,limit:{context:524288,output:262144},license:"OpenMDW-1.1",links:[{label:"Model card",url:"https://huggingface.co/arcee-ai/Trinity-Large-Thinking",type:"model_card"},{label:"Announcement",url:"https://www.arcee.ai/blog/trinity-large-thinking",type:"announcement"},{label:"License",url:"https://huggingface.co/arcee-ai/Trinity-Large-Thinking/blob/main/LICENSE",type:"license"}],weights:[{label:"Hugging Face",url:"https://huggingface.co/arcee-ai/Trinity-Large-Thinking",format:"safetensors"}]},"arcee-ai/trinity-mini":{id:"arcee-ai/trinity-mini",name:"Trinity Mini",description:"Reasoning-tuned 26B MoE model with 3B active parameters for agents, tools, and multi-step workloads",family:"trinity",attachment:false,reasoning:true,tool_call:true,temperature:true,release_date:"2025-12-01",last_updated:"2026-05-28",modalities:{input:["text"],output:["text"]},open_weights:true,limit:{context:131072,output:131072},license:"OpenMDW-1.1",links:[{label:"Model card",url:"https://huggingface.co/arcee-ai/Trinity-Mini",type:"model_card"},{label:"Announcement",url:"https://www.arcee.ai/blog/the-trinity-manifesto",type:"announcement"},{label:"License",url:"https://huggingface.co/arcee-ai/Trinity-Mini/blob/main/LICENSE",type:"license"}],weights:[{label:"Hugging Face",url:"https://huggingface.co/arcee-ai/Trinity-Mini",format:"safetensors"}]},"arcee-ai/trinity-nano-preview":{id:"arcee-ai/trinity-nano-preview",name:"Trinity Nano Preview",description:"Experimental chat-tuned 6B MoE model with 1B active parameters for low-resource chat and instruction following",family:"trinity",attachment:false,reasoning:false,tool_call:true,temperature:true,release_date:"2025-12-01",last_updated:"2026-05-28",modalities:{input:["text"],output:["text"]},open_weights:true,limit:{context:131072,output:131072},license:"OpenMDW-1.1",links:[{label:"Model card",url:"https://huggingface.co/arcee-ai/Trinity-Nano-Preview",type:"model_card"},{label:"Announcement",url:"https://www.arcee.ai/blog/the-trinity-manifesto",type:"announcement"},{label:"License",url:"https://huggingface.co/arcee-ai/Trinity-Nano-Preview/blob/main/LICENSE",type:"license"}],weights:[{label:"Hugging Face",url:"https://huggingface.co/arcee-ai/Trinity-Nano-Preview",format:"safetensors"}]},"alibaba/qwen-flash":{id:"alibaba/qwen-flash",name:"Qwen Flash",description:"Efficient Qwen model for fast chat, extraction, and high-volume workloads",family:"qwen",attachment:false,reasoning:true,tool_call:true,temperature:true,knowledge:"2024-04",release_date:"2025-07-28",last_updated:"2025-07-28",modalities:{input:["text"],output:["text"]},open_weights:false,limit:{context:1e6,output:32768}},"alibaba/qwen3.5-flash":{id:"alibaba/qwen3.5-flash",name:"Qwen3.5 Flash",description:"Qwen vision-language model for visual reasoning, documents, and agent tasks",family:"qwen",attachment:true,reasoning:true,tool_call:true,structured_output:true,temperature:true,release_date:"2026-02-23",last_updated:"2026-02-23",modalities:{input:["text","image","video"],output:["text"]},open_weights:false,limit:{context:1e6,output:65536}},"alibaba/qwen3-vl-235b-a22b-instruct":{id:"alibaba/qwen3-vl-235b-a22b-instruct",name:"Qwen3 VL 235B A22B Instruct",description:"Qwen vision-language instruct model for visual reasoning, documents, and agent tasks",family:"qwen",attachment:true,reasoning:false,tool_call:true,structured_output:true,temperature:true,knowledge:"2025-03-31",release_date:"2025-09-23",last_updated:"2025-09-23",modalities:{input:["text","image"],output:["text"]},open_weights:true,limit:{context:131072,output:32768},weights:[{label:"Hugging Face",url:"https://huggingface.co/Qwen/Qwen3-VL-235B-A22B-Instruct"}]},"alibaba/qwen3.7-max":{id:"alibaba/qwen3.7-max",name:"Qwen3.7 Max",description:"Qwen frontier model tuned for agent frameworks, coding assistants, and long tasks",family:"qwen",attachment:false,reasoning:true,tool_call:true,temperature:true,release_date:"2026-05-21",last_updated:"2026-05-21",modalities:{input:["text"],output:["text"]},open_weights:false,limit:{context:1e6,output:65536},benchmarks:[{name:"SWE-Bench Verified",score:80.4,metric:"resolved",source:"https://qwen.ai/blog?id=qwen3.7",date:"2026-05-19"},{name:"SWE-Bench Pro",score:60.6,metric:"resolve rate",source:"https://qwen.ai/blog?id=qwen3.7",date:"2026-05-19"},{name:"SWE-Bench Multilingual",score:78.3,metric:"resolve rate",source:"https://qwen.ai/blog?id=qwen3.7",date:"2026-05-19"},{name:"Terminal-Bench",score:69.7,metric:"success rate",harness:"Terminus-2",version:"2.0",source:"https://qwen.ai/blog?id=qwen3.7",date:"2026-05-19"},{name:"GPQA Diamond",score:92.4,metric:"accuracy",source:"https://qwen.ai/blog?id=qwen3.7",date:"2026-05-19"},{name:"Humanity's Last Exam",score:41.4,metric:"accuracy",source:"https://qwen.ai/blog?id=qwen3.7",date:"2026-05-19"},{name:"SciCode",score:53.5,source:"https://qwen.ai/blog?id=qwen3.7",date:"2026-05-19"},{name:"MCP Atlas",score:76.4,metric:"success rate",source:"https://qwen.ai/blog?id=qwen3.7",date:"2026-05-19"},{name:"NL2Repo",score:47.2,harness:"Claude Code",source:"https://qwen.ai/blog?id=qwen3.7",date:"2026-05-19"}]},"alibaba/qwq-plus":{id:"alibaba/qwq-plus",name:"QwQ Plus",description:"Qwen reasoning model for deliberate problem solving, math, and coding",family:"qwen",attachment:false,reasoning:true,tool_call:true,temperature:true,knowledge:"2024-04",release_date:"2025-03-05",last_updated:"2025-03-05",modalities:{input:["text"],output:["text"]},open_weights:false,limit:{context:131072,output:8192}},"alibaba/qwen3.8-27b":{id:"alibaba/qwen3.8-27b",name:"Qwen3.8 27B",description:"Dense 27B vision-language model for coding, agent tasks, and image and video understanding",family:"qwen",attachment:true,reasoning:true,tool_call:true,structured_output:true,temperature:true,release_date:"2026-08-14",last_updated:"2026-08-14",modalities:{input:["text","image","video"],output:["text"]},open_weights:true,limit:{context:262144,output:32768},weights:[{label:"Hugging Face",url:"https://huggingface.co/Qwen/Qwen3.8-27B"}],benchmarks:[{name:"SWE-bench Pro",score:61.7,metric:"resolved",source:"https://huggingface.co/Qwen/Qwen3.8-27B"},{name:"Terminal-Bench",score:73,metric:"score",harness:"Terminus",version:"2.1",source:"https://huggingface.co/Qwen/Qwen3.8-27B"},{name:"NL2Repo",score:42.3,metric:"score",harness:"Claude Code",source:"https://huggingface.co/Qwen/Qwen3.8-27B"},{name:"DeepSWE",score:42.2,metric:"score",harness:"Claude Code",version:"1.1",source:"https://huggingface.co/Qwen/Qwen3.8-27B"},{name:"QwenSWEBench",score:79,metric:"avg@3",harness:"Claude Code",dataset:"internal",source:"https://huggingface.co/Qwen/Qwen3.8-27B"},{name:"CoWorkBench",score:70.7,metric:"score",dataset:"internal",source:"https://huggingface.co/Qwen/Qwen3.8-27B"},{name:"JobBench",score:33.4,metric:"score",source:"https://huggingface.co/Qwen/Qwen3.8-27B"},{name:"Agents' Last Exam",score:20.4,metric:"pass@1",source:"https://huggingface.co/Qwen/Qwen3.8-27B"},{name:"Agents' Last Exam",score:42.9,metric:"score",source:"https://huggingface.co/Qwen/Qwen3.8-27B"},{name:"IFBench",score:79.5,metric:"score",source:"https://huggingface.co/Qwen/Qwen3.8-27B"},{name:"GPQA Diamond",score:89.2,metric:"score",source:"https://huggingface.co/Qwen/Qwen3.8-27B"},{name:"Humanity's Last Exam",score:30.8,metric:"score",variant:"without tools; GPT-4o judge",source:"https://huggingface.co/Qwen/Qwen3.8-27B"},{name:"LiveCodeBench",score:90.3,metric:"score",version:"6",source:"https://huggingface.co/Qwen/Qwen3.8-27B"},{name:"OSWorld-Verified",score:84.3,metric:"score",source:"https://huggingface.co/Qwen/Qwen3.8-27B"},{name:"WebArena-Verified",score:64.8,metric:"score",harness:"OSWorld scaffold; official WebArena-Verified grader",source:"https://huggingface.co/Qwen/Qwen3.8-27B"},{name:"AndroidWorld",score:81.9,metric:"score",source:"https://huggingface.co/Qwen/Qwen3.8-27B"},{name:"SWE-MM",score:38.6,metric:"score",source:"https://huggingface.co/Qwen/Qwen3.8-27B"},{name:"RealWorldQA",score:85.9,metric:"score",source:"https://huggingface.co/Qwen/Qwen3.8-27B"},{name:"ERQA",score:65.5,metric:"score",source:"https://huggingface.co/Qwen/Qwen3.8-27B"},{name:"RecreationBench",score:47.1,metric:"score",dataset:"internal",source:"https://huggingface.co/Qwen/Qwen3.8-27B"},{name:"ClawEval-MM",score:57.4,metric:"pass@3",source:"https://huggingface.co/Qwen/Qwen3.8-27B"},{name:"ClawEval-MM",score:56.9,metric:"average score",source:"https://huggingface.co/Qwen/Qwen3.8-27B"},{name:"Vision2Web",score:62.9,metric:"score",harness:"Claude Code",variant:"gpt-5.4-2026-03-05 judge",source:"https://huggingface.co/Qwen/Qwen3.8-27B"},{name:"MathVision",score:90,metric:"score",variant:"without code interpreter",dataset:"corrected annotations",source:"https://huggingface.co/Qwen/Qwen3.8-27B"},{name:"MathVision",score:94.6,metric:"score",variant:"with code interpreter",dataset:"corrected annotations",source:"https://huggingface.co/Qwen/Qwen3.8-27B"},{name:"BabyVision",score:65.7,metric:"score",variant:"without code interpreter",source:"https://huggingface.co/Qwen/Qwen3.8-27B"},{name:"BabyVision",score:85.6,metric:"score",variant:"with code interpreter",source:"https://huggingface.co/Qwen/Qwen3.8-27B"},{name:"CharXiv Reasoning",score:83.7,metric:"score",variant:"without code interpreter",dataset:"corrected annotations",source:"https://huggingface.co/Qwen/Qwen3.8-27B"},{name:"CharXiv Reasoning",score:90.2,metric:"score",variant:"with code interpreter",dataset:"corrected annotations",source:"https://huggingface.co/Qwen/Qwen3.8-27B"},{name:"OmniDocBench",score:91.1,metric:"score",version:"1.5",source:"https://huggingface.co/Qwen/Qwen3.8-27B"}]},"alibaba/qwq-32b":{id:"alibaba/qwq-32b",name:"QwQ 32B",description:"Open reasoning model from the Qwen team for math, coding, and step-by-step problem solving",family:"qwen",attachment:false,reasoning:true,tool_call:true,temperature:true,knowledge:"2024-04",release_date:"2025-03-05",last_updated:"2025-03-05",modalities:{input:["text"],output:["text"]},open_weights:true,limit:{context:131072,output:8192},weights:[{label:"Hugging Face",url:"https://huggingface.co/Qwen/QwQ-32B"}]},"alibaba/qwen2-5-vl-72b-instruct":{id:"alibaba/qwen2-5-vl-72b-instruct",name:"Qwen2.5-VL 72B Instruct",description:"Qwen vision-language model for visual reasoning, documents, and agent tasks",family:"qwen",attachment:false,reasoning:false,tool_call:true,temperature:true,knowledge:"2024-04",release_date:"2024-09",last_updated:"2024-09",modalities:{input:["text","image"],output:["text"]},open_weights:true,limit:{context:131072,output:8192},weights:[{label:"Hugging Face",url:"https://huggingface.co/Qwen/Qwen2.5-VL-72B-Instruct"}]},"alibaba/qwen3-vl-235b-a22b-thinking":{id:"alibaba/qwen3-vl-235b-a22b-thinking",name:"Qwen3 VL 235B A22B Thinking",description:"Qwen vision-language thinking model for visual reasoning, documents, and agent tasks",family:"qwen",attachment:true,reasoning:true,tool_call:true,structured_output:true,temperature:true,knowledge:"2025-03-31",release_date:"2025-09-23",last_updated:"2025-09-23",modalities:{input:["text","image"],output:["text"]},open_weights:true,limit:{context:131072,output:32768},weights:[{label:"Hugging Face",url:"https://huggingface.co/Qwen/Qwen3-VL-235B-A22B-Thinking"}]},"alibaba/qwen3.8-2.4t-a95b":{id:"alibaba/qwen3.8-2.4t-a95b",name:"Qwen3.8 2.4T A95B",description:"Open-weight sparse MoE (2.4T total, 95B active), the open-weight twin of Qwen3.8 Max for coding, research, complex reasoning, and agentic workflows",family:"qwen",attachment:false,reasoning:true,tool_call:true,structured_output:true,temperature:true,release_date:"2026-08-12",last_updated:"2026-08-12",modalities:{input:["text"],output:["text"]},open_weights:true,limit:{context:262144,output:131072},license:"qwen3.8-max",weights:[{label:"Hugging Face",url:"https://huggingface.co/Qwen/Qwen3.8-2.4T-A95B"}]},"alibaba/qwen3-vl-plus":{id:"alibaba/qwen3-vl-plus",name:"Qwen3-VL Plus",description:"Qwen vision-language model for visual reasoning, documents, and agent tasks",family:"qwen",attachment:false,reasoning:true,tool_call:true,temperature:true,knowledge:"2025-04",release_date:"2025-09-23",last_updated:"2025-09-23",modalities:{input:["text","image"],output:["text"]},open_weights:false,limit:{context:262144,output:32768}},"alibaba/qwen3.5-27b":{id:"alibaba/qwen3.5-27b",name:"Qwen3.5 27B",description:"Qwen vision-language model for visual reasoning, documents, and agent tasks",family:"qwen",attachment:true,reasoning:true,tool_call:true,structured_output:true,temperature:true,release_date:"2026-02-23",last_updated:"2026-02-23",modalities:{input:["text","image","video","audio"],output:["text"]},open_weights:true,limit:{context:262144,output:65536},weights:[{label:"Hugging Face",url:"https://huggingface.co/Qwen/Qwen3.5-27B"}],benchmarks:[{name:"SWE-Bench Verified",score:72.4,metric:"resolved",source:"https://huggingface.co/Qwen/Qwen3.5-27B"}]},"alibaba/qwen3-235b-a22b-instruct-2507":{id:"alibaba/qwen3-235b-a22b-instruct-2507",name:"Qwen3 235B-A22B Instruct 2507",description:"Updated large open Qwen3 MoE instruct model for multilingual chat, coding, and tool use",family:"qwen",attachment:false,reasoning:false,tool_call:true,temperature:true,release_date:"2025-07-21",last_updated:"2025-07-21",modalities:{input:["text"],output:["text"]},open_weights:true,limit:{context:262144,output:16384},license:"Apache 2.0",weights:[{label:"Hugging Face",url:"https://huggingface.co/Qwen/Qwen3-235B-A22B-Instruct-2507"}]},"alibaba/qwen-max":{id:"alibaba/qwen-max",name:"Qwen Max",description:"Flagship Qwen model for complex reasoning, coding, and agentic workflows",family:"qwen",attachment:false,reasoning:false,tool_call:true,temperature:true,knowledge:"2024-04",release_date:"2024-04-03",last_updated:"2025-01-25",modalities:{input:["text"],output:["text"]},open_weights:false,limit:{context:32768,output:8192},benchmarks:[{name:"Aider Polyglot",score:21.8,metric:"percent correct",source:"https://aider.chat/docs/leaderboards/",date:"2025-01-28"}]},"alibaba/qwen3-next-80b-a3b-thinking":{id:"alibaba/qwen3-next-80b-a3b-thinking",name:"Qwen3-Next 80B-A3B (Thinking)",description:"Efficient Qwen thinking model for local reasoning, math, and coding agents",family:"qwen",attachment:false,reasoning:true,tool_call:true,temperature:true,knowledge:"2025-04",release_date:"2025-09",last_updated:"2025-09",modalities:{input:["text"],output:["text"]},open_weights:true,limit:{context:131072,output:32768},weights:[{label:"Hugging Face",url:"https://huggingface.co/Qwen/Qwen3-Next-80B-A3B-Thinking"}]},"alibaba/qwen3.8-max":{id:"alibaba/qwen3.8-max",name:"Qwen3.8 Max",description:"2.4-trillion-parameter MoE flagship for coding, professional work, multimodal understanding, and long-horizon agentic workflows",family:"qwen",attachment:true,reasoning:true,tool_call:true,temperature:true,release_date:"2026-08-03",last_updated:"2026-08-03",modalities:{input:["text","image","video","pdf"],output:["text"]},open_weights:false,limit:{context:1e6,output:131072},benchmarks:[{name:"Terminal-Bench",score:86.6,metric:"avg@10",harness:"Claude Code",variant:"5h timeout",version:"2.1",source:"https://huggingface.co/Qwen/Qwen3.8-2.4T-A95B"},{name:"SWE-Bench Pro",score:67.7,metric:"resolved",harness:"Claude Code",dataset:"Qwen refined and corrected task set",source:"https://huggingface.co/Qwen/Qwen3.8-2.4T-A95B"},{name:"DeepSWE",score:56.6,metric:"score",harness:"Claude Code",version:"1.1",source:"https://huggingface.co/Qwen/Qwen3.8-2.4T-A95B"},{name:"NL2Repo",score:55.9,metric:"score",harness:"Claude Code",source:"https://huggingface.co/Qwen/Qwen3.8-2.4T-A95B"},{name:"FrontierSWE",score:73.5,metric:"dominance score",source:"https://huggingface.co/Qwen/Qwen3.8-2.4T-A95B",date:"2026-08-03"},{name:"MLS-Bench-Lite",score:41,metric:"score",harness:"Claude Code",variant:"5h timeout",source:"https://huggingface.co/Qwen/Qwen3.8-2.4T-A95B"},{name:"PaperBench",score:93,metric:"score",harness:"BasicAgent",variant:"Code-Dev; 3 runs; 12h timeout; Opus 4.6 judge",source:"https://huggingface.co/Qwen/Qwen3.8-2.4T-A95B"},{name:"AndroidBench",score:75.1,metric:"avg@3",dataset:"95 public tasks",source:"https://huggingface.co/Qwen/Qwen3.8-2.4T-A95B"},{name:"QwenSWEBench",score:80.7,metric:"avg@3",harness:"Claude Code",dataset:"internal",source:"https://huggingface.co/Qwen/Qwen3.8-2.4T-A95B"},{name:"QwenQoderBench",score:58.4,metric:"avg@5",harness:"Claude Code",dataset:"internal",source:"https://huggingface.co/Qwen/Qwen3.8-2.4T-A95B"},{name:"QwenReactBench",score:1724,metric:"Elo",dataset:"internal",source:"https://huggingface.co/Qwen/Qwen3.8-2.4T-A95B"},{name:"QwenSVGBench",score:1713,metric:"Elo",dataset:"internal",source:"https://huggingface.co/Qwen/Qwen3.8-2.4T-A95B"},{name:"CoWorkBench",score:74.8,metric:"score",dataset:"internal",source:"https://huggingface.co/Qwen/Qwen3.8-2.4T-A95B"},{name:"WorkSpaceBench",score:67.7,metric:"score",source:"https://huggingface.co/Qwen/Qwen3.8-2.4T-A95B"},{name:"JobBench",score:53.4,metric:"score",source:"https://huggingface.co/Qwen/Qwen3.8-2.4T-A95B"},{name:"SkillsBench",score:70.2,metric:"avg@3",harness:"OpenCode",dataset:"87 tasks",version:"1.1",source:"https://huggingface.co/Qwen/Qwen3.8-2.4T-A95B"},{name:"Agents' Last Exam",score:27,metric:"pass@1",source:"https://huggingface.co/Qwen/Qwen3.8-2.4T-A95B"},{name:"Agents' Last Exam",score:52.4,metric:"score",source:"https://huggingface.co/Qwen/Qwen3.8-2.4T-A95B"},{name:"AutomationBench",score:27.3,metric:"pass@1",dataset:"600 public tasks",source:"https://huggingface.co/Qwen/Qwen3.8-2.4T-A95B"},{name:"Toolathlon-Verified",score:72.5,metric:"pass@1",source:"https://huggingface.co/Qwen/Qwen3.8-2.4T-A95B"},{name:"WideSearch",score:81.9,metric:"average item F1",harness:"Qwen-Agent",source:"https://huggingface.co/Qwen/Qwen3.8-2.4T-A95B"},{name:"Humanity's Last Exam",score:56.2,metric:"score",variant:"with tools",source:"https://huggingface.co/Qwen/Qwen3.8-2.4T-A95B"},{name:"Humanity's Last Exam",score:43.6,metric:"score",variant:"without tools",source:"https://huggingface.co/Qwen/Qwen3.8-2.4T-A95B"},{name:"GPQA Diamond",score:92.6,metric:"score",source:"https://huggingface.co/Qwen/Qwen3.8-2.4T-A95B"},{name:"IFBench",score:82.8,metric:"score",source:"https://huggingface.co/Qwen/Qwen3.8-2.4T-A95B"},{name:"$OneMillion-Bench",score:52.5,metric:"expert score",variant:"gemini-3.1-pro-preview judge",source:"https://huggingface.co/Qwen/Qwen3.8-2.4T-A95B"},{name:"HealthBench",score:60.2,metric:"score",source:"https://huggingface.co/Qwen/Qwen3.8-2.4T-A95B"},{name:"PLawBench",score:73.2,metric:"score",variant:"gemini-3.1-pro-preview judge",source:"https://huggingface.co/Qwen/Qwen3.8-2.4T-A95B"},{name:"PRBench",score:57.6,metric:"score",variant:"legal",source:"https://huggingface.co/Qwen/Qwen3.8-2.4T-A95B"},{name:"PRBench",score:58.3,metric:"score",variant:"finance",source:"https://huggingface.co/Qwen/Qwen3.8-2.4T-A95B"},{name:"MRCR",score:92.9,metric:"score",dataset:"256K; 8-needle",version:"2",source:"https://huggingface.co/Qwen/Qwen3.8-2.4T-A95B"},{name:"LongBench",score:66.3,metric:"score",version:"2",source:"https://huggingface.co/Qwen/Qwen3.8-2.4T-A95B"}]},"alibaba/qwen3-coder-next":{id:"alibaba/qwen3-coder-next",name:"Qwen3 Coder Next",description:"Open-weight Qwen coding model for agents, repository edits, and multi-turn tool use",family:"qwen",attachment:false,reasoning:false,tool_call:true,structured_output:true,temperature:true,knowledge:"2025-09",release_date:"2026-02-03",last_updated:"2026-02-03",modalities:{input:["text"],output:["text"]},open_weights:true,limit:{context:262144,output:65536},weights:[{label:"Hugging Face",url:"https://huggingface.co/Qwen/Qwen3-Coder-Next"}]},"alibaba/qwen3.5-plus":{id:"alibaba/qwen3.5-plus",name:"Qwen3.5 Plus",description:"Qwen vision-language model for visual reasoning, documents, and agent tasks",family:"qwen",attachment:false,reasoning:true,tool_call:true,temperature:true,knowledge:"2025-04",release_date:"2026-02-16",last_updated:"2026-02-16",modalities:{input:["text","image","video"],output:["text"]},open_weights:false,limit:{context:1e6,output:65536}},"alibaba/qwen3.8-max-preview":{id:"alibaba/qwen3.8-max-preview",name:"Qwen3.8 Max Preview",description:"Preview Qwen flagship for million-token multimodal reasoning and long-horizon agentic workflows",family:"qwen",attachment:true,reasoning:true,tool_call:true,temperature:true,release_date:"2026-07-19",last_updated:"2026-07-19",modalities:{input:["text","image","video"],output:["text"]},open_weights:false,limit:{context:1e6,output:131072},benchmarks:[{name:"Terminal-Bench",score:86.6,metric:"accuracy",variant:"xhigh",version:"2.1",source:"https://www.alibabacloud.com/blog/qwen3-8-max-a-new-bar-for-coding-and-cowork_603421",date:"2026-08-03"},{name:"SWE-Bench Pro",score:67.7,metric:"resolve rate",harness:"Claude Code",variant:"xhigh",source:"https://www.alibabacloud.com/blog/qwen3-8-max-a-new-bar-for-coding-and-cowork_603421",date:"2026-08-03"},{name:"DeepSWE",score:56.6,metric:"resolve rate",harness:"Claude Code",variant:"xhigh",version:"1.1",source:"https://www.alibabacloud.com/blog/qwen3-8-max-a-new-bar-for-coding-and-cowork_603421",date:"2026-08-03"},{name:"NL2Repo",score:55.9,metric:"resolve rate",harness:"Claude Code",variant:"xhigh",source:"https://www.alibabacloud.com/blog/qwen3-8-max-a-new-bar-for-coding-and-cowork_603421",date:"2026-08-03"},{name:"FrontierSWE",score:73.5,metric:"dominance score",harness:"Claude Code",variant:"xhigh",source:"https://www.alibabacloud.com/blog/qwen3-8-max-a-new-bar-for-coding-and-cowork_603421",date:"2026-08-03"},{name:"MLS-Bench-Lite",score:41,metric:"score",harness:"Claude Code",variant:"xhigh",source:"https://www.alibabacloud.com/blog/qwen3-8-max-a-new-bar-for-coding-and-cowork_603421",date:"2026-08-03"},{name:"AutomationBench",score:27.3,metric:"pass@1",variant:"xhigh",dataset:"600-task public subset",source:"https://www.alibabacloud.com/blog/qwen3-8-max-a-new-bar-for-coding-and-cowork_603421",date:"2026-08-03"},{name:"Toolathlon Verified",score:72.5,metric:"pass@1",variant:"xhigh",source:"https://www.alibabacloud.com/blog/qwen3-8-max-a-new-bar-for-coding-and-cowork_603421",date:"2026-08-03"},{name:"WideSearch",score:81.9,metric:"F1",variant:"xhigh",source:"https://www.alibabacloud.com/blog/qwen3-8-max-a-new-bar-for-coding-and-cowork_603421",date:"2026-08-03"},{name:"Humanity's Last Exam",score:56.2,metric:"accuracy",variant:"xhigh, with tools",source:"https://www.alibabacloud.com/blog/qwen3-8-max-a-new-bar-for-coding-and-cowork_603421",date:"2026-08-03"},{name:"GPQA Diamond",score:92.6,metric:"accuracy",variant:"xhigh",source:"https://www.alibabacloud.com/blog/qwen3-8-max-a-new-bar-for-coding-and-cowork_603421",date:"2026-08-03"},{name:"Humanity's Last Exam",score:43.6,metric:"accuracy",variant:"xhigh, no tools",source:"https://www.alibabacloud.com/blog/qwen3-8-max-a-new-bar-for-coding-and-cowork_603421",date:"2026-08-03"},{name:"IFBench",score:82.8,metric:"score",variant:"xhigh",source:"https://www.alibabacloud.com/blog/qwen3-8-max-a-new-bar-for-coding-and-cowork_603421",date:"2026-08-03"},{name:"OSWorld-Verified",score:86.1,metric:"success rate",variant:"xhigh",source:"https://www.alibabacloud.com/blog/qwen3-8-max-a-new-bar-for-coding-and-cowork_603421",date:"2026-08-03"},{name:"MMMU Pro",score:82.3,metric:"accuracy",variant:"xhigh",source:"https://www.alibabacloud.com/blog/qwen3-8-max-a-new-bar-for-coding-and-cowork_603421",date:"2026-08-03"}]},"alibaba/qwen3-32b":{id:"alibaba/qwen3-32b",name:"Qwen3 32B",description:"Dense open Qwen model for self-hosted chat, reasoning, and coding",family:"qwen",attachment:false,reasoning:true,tool_call:true,temperature:true,knowledge:"2025-04",release_date:"2025-04",last_updated:"2025-04",modalities:{input:["text"],output:["text"]},open_weights:true,limit:{context:131072,output:16384},weights:[{label:"Hugging Face",url:"https://huggingface.co/Qwen/Qwen3-32B"}],benchmarks:[{name:"Aider Polyglot",score:40,metric:"percent correct",source:"https://aider.chat/docs/leaderboards/",date:"2025-05-08"}]},"alibaba/qwen-plus":{id:"alibaba/qwen-plus",name:"Qwen Plus",description:"Qwen instruction model for multilingual chat, reasoning, and tool use",family:"qwen",attachment:false,reasoning:true,tool_call:true,temperature:true,knowledge:"2024-04",release_date:"2024-01-25",last_updated:"2025-09-11",modalities:{input:["text"],output:["text"]},open_weights:false,limit:{context:1e6,output:32768}},"alibaba/qwen3.7-flash":{id:"alibaba/qwen3.7-flash",name:"Qwen3.7 Flash",description:"Lightweight multimodal Qwen model for high-throughput text, image, and video tasks",family:"qwen",attachment:true,reasoning:true,tool_call:true,structured_output:true,temperature:true,release_date:"2026-07-15",last_updated:"2026-07-15",modalities:{input:["text","image","video"],output:["text"]},open_weights:false,limit:{context:1e6,input:991e3,output:65536}},"alibaba/qwen3-max":{id:"alibaba/qwen3-max",name:"Qwen3 Max",description:"Flagship Qwen3 model for coding agents, complex reasoning, and tool use",family:"qwen",attachment:false,reasoning:false,tool_call:true,temperature:true,knowledge:"2025-04",release_date:"2025-09-23",last_updated:"2025-09-23",modalities:{input:["text"],output:["text"]},open_weights:false,limit:{context:262144,output:65536},benchmarks:[{name:"Artificial Analysis Coding Index",score:26.4,metric:"index",source:"https://openrouter.ai/qwen/qwen3-max/benchmarks",date:"2026-05-30"},{name:"SciCode",score:38.3,metric:"percent correct",source:"https://openrouter.ai/qwen/qwen3-max/benchmarks",date:"2026-05-30"},{name:"Terminal-Bench Hard",score:20.5,metric:"success rate",source:"https://openrouter.ai/qwen/qwen3-max/benchmarks",date:"2026-05-30"}]},"alibaba/qwen3-coder-480b-a35b-instruct":{id:"alibaba/qwen3-coder-480b-a35b-instruct",name:"Qwen3-Coder 480B-A35B Instruct",description:"Open Qwen coding heavyweight for repository reasoning and agentic engineering",family:"qwen",attachment:false,reasoning:false,tool_call:true,temperature:true,knowledge:"2025-04",release_date:"2025-04",last_updated:"2025-04",modalities:{input:["text"],output:["text"]},open_weights:true,limit:{context:262144,output:65536},weights:[{label:"Hugging Face",url:"https://huggingface.co/Qwen/Qwen3-Coder-480B-A35B-Instruct"}],benchmarks:[{name:"SWE-Bench Pro",score:38.7,metric:"resolve rate",dataset:"public",source:"https://labs.scale.com/leaderboard/swe_bench_pro_public"}]},"alibaba/qwen-turbo":{id:"alibaba/qwen-turbo",name:"Qwen Turbo",description:"Efficient Qwen model for fast chat, extraction, and high-volume workloads",family:"qwen",attachment:false,reasoning:true,tool_call:true,temperature:true,knowledge:"2024-04",release_date:"2024-11-01",last_updated:"2025-04-28",modalities:{input:["text"],output:["text"]},open_weights:false,limit:{context:1e6,output:16384}},"alibaba/qwen3-coder-30b-a3b-instruct":{id:"alibaba/qwen3-coder-30b-a3b-instruct",name:"Qwen3-Coder 30B-A3B Instruct",description:"Smaller Qwen coder for efficient local agents and repo-level fixes",family:"qwen",attachment:false,reasoning:false,tool_call:true,temperature:true,knowledge:"2025-04",release_date:"2025-04",last_updated:"2025-04",modalities:{input:["text"],output:["text"]},open_weights:true,limit:{context:262144,output:65536},weights:[{label:"Hugging Face",url:"https://huggingface.co/Qwen/Qwen3-Coder-30B-A3B-Instruct"}],benchmarks:[{name:"Artificial Analysis Coding Index",score:19.4,metric:"index",source:"https://openrouter.ai/qwen/qwen3-coder-30b-a3b-instruct/benchmarks",date:"2026-06-02"},{name:"SciCode",score:27.8,metric:"percent correct",source:"https://openrouter.ai/qwen/qwen3-coder-30b-a3b-instruct/benchmarks",date:"2026-06-02"},{name:"Terminal-Bench Hard",score:15.2,metric:"success rate",source:"https://openrouter.ai/qwen/qwen3-coder-30b-a3b-instruct/benchmarks",date:"2026-06-02"}]},"alibaba/qwen3.8-omni-flash":{id:"alibaba/qwen3.8-omni-flash",name:"Qwen3.8 Omni Flash",description:"Qwen omni model for text, vision, audio, and multimodal agent tasks",family:"qwen",attachment:true,reasoning:true,tool_call:true,release_date:"2026-09-17",last_updated:"2026-09-17",modalities:{input:["text","image","audio","video"],output:["text"]},open_weights:false,limit:{context:1e6,output:131072}},"alibaba/qwen-vl-max":{id:"alibaba/qwen-vl-max",name:"Qwen-VL Max",description:"Qwen vision-language model for visual reasoning, documents, and agent tasks",family:"qwen",attachment:false,reasoning:false,tool_call:true,temperature:true,knowledge:"2024-04",release_date:"2024-04-08",last_updated:"2025-08-13",modalities:{input:["text","image"],output:["text"]},open_weights:false,limit:{context:131072,output:8192}},"alibaba/qwen3-235b-a22b":{id:"alibaba/qwen3-235b-a22b",name:"Qwen3 235B-A22B",description:"Large open Qwen MoE for multilingual reasoning, coding, and tool use",family:"qwen",attachment:false,reasoning:true,tool_call:true,temperature:true,knowledge:"2025-04",release_date:"2025-04",last_updated:"2025-04",modalities:{input:["text"],output:["text"]},open_weights:true,limit:{context:131072,output:16384},weights:[{label:"Hugging Face",url:"https://huggingface.co/Qwen/Qwen3-235B-A22B"}],benchmarks:[{name:"Aider Polyglot",score:59.6,metric:"percent correct",source:"https://aider.chat/docs/leaderboards/",date:"2025-05-09"},{name:"SWE-Bench Pro",score:21.41,metric:"resolve rate",dataset:"public",source:"https://labs.scale.com/leaderboard/swe_bench_pro_public"}]},"alibaba/qwen3.5-122b-a10b":{id:"alibaba/qwen3.5-122b-a10b",name:"Qwen3.5 122B-A10B",description:"Qwen vision-language model for visual reasoning, documents, and agent tasks",family:"qwen",attachment:true,reasoning:true,tool_call:true,structured_output:true,temperature:true,release_date:"2026-02-23",last_updated:"2026-02-23",modalities:{input:["text","image","video","audio"],output:["text"]},open_weights:true,limit:{context:262144,output:65536},weights:[{label:"Hugging Face",url:"https://huggingface.co/Qwen/Qwen3.5-122B-A10B"}],benchmarks:[{name:"SWE-Bench Verified",score:72,metric:"resolved",source:"https://huggingface.co/Qwen/Qwen3.5-122B-A10B"}]},"alibaba/qwen3.6-35b-a3b":{id:"alibaba/qwen3.6-35b-a3b",name:"Qwen3.6 35B-A3B",description:"Open multimodal Qwen MoE for local agents that need vision, audio, and code",family:"qwen",attachment:true,reasoning:true,tool_call:true,structured_output:true,temperature:true,release_date:"2026-04-17",last_updated:"2026-04-17",modalities:{input:["text","image","video","audio"],output:["text"]},open_weights:true,limit:{context:262144,output:65536},weights:[{label:"Hugging Face",url:"https://huggingface.co/Qwen/Qwen3.6-35B-A3B"}],benchmarks:[{name:"SWE-Bench Verified",score:73.4,metric:"resolved",source:"https://huggingface.co/Qwen/Qwen3.6-35B-A3B"}]},"alibaba/qwen3-next-80b-a3b-instruct":{id:"alibaba/qwen3-next-80b-a3b-instruct",name:"Qwen3-Next 80B-A3B Instruct",description:"Qwen instruction model for multilingual chat, reasoning, and tool use",family:"qwen",attachment:false,reasoning:false,tool_call:true,temperature:true,knowledge:"2025-04",release_date:"2025-09",last_updated:"2025-09",modalities:{input:["text"],output:["text"]},open_weights:true,limit:{context:131072,output:32768},weights:[{label:"Hugging Face",url:"https://huggingface.co/Qwen/Qwen3-Next-80B-A3B-Instruct"}]},"alibaba/qwen-vl-plus":{id:"alibaba/qwen-vl-plus",name:"Qwen-VL Plus",description:"Qwen vision-language model for visual reasoning, documents, and agent tasks",family:"qwen",attachment:false,reasoning:false,tool_call:true,temperature:true,knowledge:"2024-04",release_date:"2024-01-25",last_updated:"2025-08-15",modalities:{input:["text","image"],output:["text"]},open_weights:false,limit:{context:131072,output:8192}},"alibaba/qwen3.6-flash":{id:"alibaba/qwen3.6-flash",name:"Qwen3.6 Flash",description:"Qwen vision-language model for visual reasoning, documents, and agent tasks",family:"qwen3.6",attachment:true,reasoning:true,tool_call:true,structured_output:true,temperature:true,release_date:"2026-04-27",last_updated:"2026-04-27",modalities:{input:["text","image","video"],output:["text"]},open_weights:false,limit:{context:1e6,output:65536}},"alibaba/qwen3-coder-flash":{id:"alibaba/qwen3-coder-flash",name:"Qwen3 Coder Flash",description:"Qwen coding model for software agents, repository edits, and code reasoning",family:"qwen",attachment:false,reasoning:false,tool_call:true,temperature:true,knowledge:"2025-04",release_date:"2025-07-28",last_updated:"2025-07-28",modalities:{input:["text"],output:["text"]},open_weights:false,limit:{context:1e6,output:65536}},"alibaba/qwen3-coder-plus":{id:"alibaba/qwen3-coder-plus",name:"Qwen3 Coder Plus",description:"Hosted Qwen coder for software agents, repo edits, and long-context code",family:"qwen",attachment:false,reasoning:false,tool_call:true,temperature:true,knowledge:"2025-04",release_date:"2025-07-23",last_updated:"2025-07-23",modalities:{input:["text"],output:["text"]},open_weights:false,limit:{context:1048576,output:65536}},"alibaba/qwen3.5-9b":{id:"alibaba/qwen3.5-9b",name:"Qwen3.5 9B",description:"Qwen instruction model for multilingual chat, reasoning, and tool use",family:"qwen",attachment:true,reasoning:true,tool_call:true,structured_output:true,temperature:true,release_date:"2026-02-23",last_updated:"2026-02-23",modalities:{input:["text","image","video"],output:["text"]},open_weights:true,limit:{context:262144,output:65536},weights:[{label:"Hugging Face",url:"https://huggingface.co/Qwen/Qwen3.5-9B"}]},"alibaba/qwen3.8-max-prime":{id:"alibaba/qwen3.8-max-prime",name:"Qwen 3.8 Max Prime",description:"High-throughput edition of Qwen3.8 Max for coding, professional work, multimodal understanding, and long-running agent workflows",family:"qwen3.8-max",attachment:true,reasoning:true,tool_call:true,structured_output:true,temperature:true,release_date:"2026-09-23",last_updated:"2026-09-23",modalities:{input:["text","image","video"],output:["text"]},open_weights:false,limit:{context:1e6,output:131072}},"alibaba/qwen3.8-flash":{id:"alibaba/qwen3.8-flash",name:"Qwen3.8 Flash",description:"Qwen vision-language model for visual reasoning, documents, and agent tasks",family:"qwen",attachment:true,reasoning:true,tool_call:true,structured_output:true,release_date:"2026-08-26",last_updated:"2026-08-26",modalities:{input:["text","image","video"],output:["text"]},open_weights:false,limit:{context:1e6,output:131072}},"alibaba/qwen3.8-flash-next":{id:"alibaba/qwen3.8-flash-next",name:"Qwen3.8 Flash Next",description:"Open-weight experimental preview of the Qwen4 architecture: hybrid-attention MoE (125B total, 6B active) with vision encoder for coding, agent tasks, and image and video understanding",family:"qwen",attachment:true,reasoning:true,tool_call:true,structured_output:true,temperature:true,release_date:"2026-08-27",last_updated:"2026-08-27",modalities:{input:["text","image","video"],output:["text"]},open_weights:true,limit:{context:262144,output:131072},license:"qwen-community-1.0",weights:[{label:"Hugging Face",url:"https://huggingface.co/Qwen/Qwen3.8-Flash-Next"}],benchmarks:[{name:"DeepSWE",score:58.7,metric:"score",harness:"mini-swe-agent",version:"1.1",source:"https://huggingface.co/Qwen/Qwen3.8-Flash-Next"},{name:"SWE-Bench Pro",score:62.5,metric:"score",harness:"Claude Code",dataset:"Qwen refined and corrected task set",source:"https://huggingface.co/Qwen/Qwen3.8-Flash-Next"},{name:"SWE-Bench Multilingual",score:81,metric:"score",harness:"mini-swe-agent",source:"https://huggingface.co/Qwen/Qwen3.8-Flash-Next"},{name:"NL2Repo",score:48.1,metric:"score",harness:"Claude Code",source:"https://huggingface.co/Qwen/Qwen3.8-Flash-Next"},{name:"CoWorkBench",score:73.9,metric:"score",dataset:"internal",source:"https://huggingface.co/Qwen/Qwen3.8-Flash-Next"},{name:"JobBench",score:55.7,metric:"score",source:"https://huggingface.co/Qwen/Qwen3.8-Flash-Next"},{name:"Agents' Last Exam",score:24.3,metric:"pass@1",source:"https://huggingface.co/Qwen/Qwen3.8-Flash-Next"},{name:"Agents' Last Exam",score:51.2,metric:"score",source:"https://huggingface.co/Qwen/Qwen3.8-Flash-Next"},{name:"Toolathlon-Verified",score:73.5,metric:"pass@1",source:"https://huggingface.co/Qwen/Qwen3.8-Flash-Next"},{name:"IFBench",score:81.3,metric:"score",source:"https://huggingface.co/Qwen/Qwen3.8-Flash-Next"},{name:"GPQA Diamond",score:91.7,metric:"score",source:"https://huggingface.co/Qwen/Qwen3.8-Flash-Next"},{name:"Humanity's Last Exam",score:35.9,metric:"score",variant:"without tools; GPT-4o judge",source:"https://huggingface.co/Qwen/Qwen3.8-Flash-Next"},{name:"LiveCodeBench",score:91.9,metric:"score",version:"6",source:"https://huggingface.co/Qwen/Qwen3.8-Flash-Next"},{name:"ClawEval-MM",score:64.4,metric:"pass@3",source:"https://huggingface.co/Qwen/Qwen3.8-Flash-Next"},{name:"ClawEval-MM",score:60.4,metric:"average score",source:"https://huggingface.co/Qwen/Qwen3.8-Flash-Next"},{name:"RecreationBench",score:49.9,metric:"score",dataset:"internal",source:"https://huggingface.co/Qwen/Qwen3.8-Flash-Next"},{name:"AndroidWorld",score:84.5,metric:"score",source:"https://huggingface.co/Qwen/Qwen3.8-Flash-Next"},{name:"OSWorld",score:19.4,metric:"binary completion rate",version:"2.0",source:"https://huggingface.co/Qwen/Qwen3.8-Flash-Next"},{name:"OSWorld",score:52.3,metric:"partial score",version:"2.0",source:"https://huggingface.co/Qwen/Qwen3.8-Flash-Next"},{name:"Vision2Web",score:64,metric:"score",harness:"Claude Code",variant:"gpt-5.4-2026-03-05 judge",source:"https://huggingface.co/Qwen/Qwen3.8-Flash-Next"},{name:"ERQA",score:72.3,metric:"score",source:"https://huggingface.co/Qwen/Qwen3.8-Flash-Next"},{name:"LVBench",score:76.6,metric:"score",source:"https://huggingface.co/Qwen/Qwen3.8-Flash-Next"},{name:"RealWorldQA",score:88.5,metric:"score",source:"https://huggingface.co/Qwen/Qwen3.8-Flash-Next"},{name:"MathVision",score:90.6,metric:"score",variant:"without code interpreter",dataset:"corrected annotations",source:"https://huggingface.co/Qwen/Qwen3.8-Flash-Next"},{name:"MathVision",score:95.7,metric:"score",variant:"with code interpreter",dataset:"corrected annotations",source:"https://huggingface.co/Qwen/Qwen3.8-Flash-Next"},{name:"CharXiv Reasoning",score:84.6,metric:"score",variant:"without code interpreter",source:"https://huggingface.co/Qwen/Qwen3.8-Flash-Next"},{name:"CharXiv Reasoning",score:90.6,metric:"score",variant:"with code interpreter",source:"https://huggingface.co/Qwen/Qwen3.8-Flash-Next"}]},"alibaba/qwen3.5-35b-a3b":{id:"alibaba/qwen3.5-35b-a3b",name:"Qwen3.5 35B-A3B",description:"Qwen vision-language model for visual reasoning, documents, and agent tasks",family:"qwen",attachment:true,reasoning:true,tool_call:true,structured_output:true,temperature:true,release_date:"2026-02-23",last_updated:"2026-02-23",modalities:{input:["text","image","video","audio"],output:["text"]},open_weights:true,limit:{context:262144,output:65536},weights:[{label:"Hugging Face",url:"https://huggingface.co/Qwen/Qwen3.5-35B-A3B"}]},"alibaba/qwen3.6-max-preview":{id:"alibaba/qwen3.6-max-preview",name:"Qwen3.6 Max Preview",description:"Flagship Qwen model for complex reasoning, coding, and agentic workflows",family:"qwen",attachment:false,reasoning:true,tool_call:true,temperature:true,knowledge:"2025-04",release_date:"2026-04-20",last_updated:"2026-04-20",modalities:{input:["text"],output:["text"]},open_weights:false,limit:{context:262144,output:65536}},"alibaba/qwen3-30b-a3b":{id:"alibaba/qwen3-30b-a3b",name:"Qwen3 30B A3B",description:"Sparse MoE Qwen model with 3B active parameters for efficient chat and reasoning",family:"qwen",attachment:false,reasoning:true,tool_call:true,temperature:true,release_date:"2025-04-28",last_updated:"2025-04-28",modalities:{input:["text"],output:["text"]},open_weights:true,limit:{context:131072,output:16384},weights:[{label:"Hugging Face",url:"https://huggingface.co/Qwen/Qwen3-30B-A3B"}]},"alibaba/qwen3.5-397b-a17b":{id:"alibaba/qwen3.5-397b-a17b",name:"Qwen3.5 397B-A17B",description:"Large open Qwen multimodal MoE for visual agents and long technical tasks",family:"qwen",attachment:true,reasoning:true,tool_call:true,structured_output:true,temperature:true,release_date:"2026-02-15",last_updated:"2026-02-15",modalities:{input:["text","image","video","audio"],output:["text"]},open_weights:true,limit:{context:262144,output:65536},weights:[{label:"Hugging Face",url:"https://huggingface.co/Qwen/Qwen3.5-397B-A17B"}],benchmarks:[{name:"SWE-Bench Verified",score:76.4,metric:"resolved",source:"https://huggingface.co/Qwen/Qwen3.5-397B-A17B"}]},"alibaba/qwen-omni-turbo":{id:"alibaba/qwen-omni-turbo",name:"Qwen-Omni Turbo",description:"Qwen omni model for text, vision, audio, and multimodal agent tasks",family:"qwen",attachment:false,reasoning:false,tool_call:true,temperature:true,knowledge:"2024-04",release_date:"2025-01-19",last_updated:"2025-03-26",modalities:{input:["text","image","audio","video"],output:["text","audio"]},open_weights:false,limit:{context:32768,output:2048}},"alibaba/qwen2.5-coder-32b-instruct":{id:"alibaba/qwen2.5-coder-32b-instruct",name:"Qwen2.5-Coder-32B-Instruct",description:"Open coding-focused Qwen model for code generation, repair, and repository reasoning",family:"qwen",attachment:false,reasoning:false,tool_call:true,temperature:true,release_date:"2024-11-12",last_updated:"2024-11-12",modalities:{input:["text"],output:["text"]},open_weights:true,limit:{context:131072,output:8192},weights:[{label:"Hugging Face",url:"https://huggingface.co/Qwen/Qwen2.5-Coder-32B-Instruct"}]},"alibaba/qwen3.6-27b":{id:"alibaba/qwen3.6-27b",name:"Qwen3.6 27B",description:"Qwen vision-language model for visual reasoning, documents, and agent tasks",family:"qwen",attachment:true,reasoning:true,tool_call:true,structured_output:true,temperature:true,release_date:"2026-04-22",last_updated:"2026-04-22",modalities:{input:["text","image","video","audio"],output:["text"]},open_weights:true,limit:{context:262144,output:65536},weights:[{label:"Hugging Face",url:"https://huggingface.co/Qwen/Qwen3.6-27B"}],benchmarks:[{name:"SWE-Bench Verified",score:77.2,metric:"resolved",source:"https://huggingface.co/Qwen/Qwen3.6-27B"}]},"alibaba/qwen3.6-plus":{id:"alibaba/qwen3.6-plus",name:"Qwen3.6 Plus",description:"Earlier Qwen multimodal workhorse for million-token agent and document tasks",family:"qwen",attachment:true,reasoning:true,tool_call:true,temperature:true,knowledge:"2025-04",release_date:"2026-04-02",last_updated:"2026-04-02",modalities:{input:["text","image","video"],output:["text"]},open_weights:false,limit:{context:1e6,output:65536}},"alibaba/qwen2.5-coder-0.5b":{id:"alibaba/qwen2.5-coder-0.5b",name:"Qwen2.5-Coder-0.5B",description:"Tiny open Qwen code model for lightweight completion and on-device coding",family:"qwen",attachment:false,reasoning:false,tool_call:false,temperature:true,release_date:"2024-11-12",last_updated:"2024-11-12",modalities:{input:["text"],output:["text"]},open_weights:true,limit:{context:32768,output:8192},license:"Apache 2.0",weights:[{label:"Hugging Face",url:"https://huggingface.co/Qwen/Qwen2.5-Coder-0.5B"}]},"alibaba/qwen3.7-plus":{id:"alibaba/qwen3.7-plus",name:"Qwen3.7 Plus",description:"Multimodal Qwen workhorse for long-context agents, visual inputs, and coding",family:"qwen",attachment:true,reasoning:true,tool_call:true,temperature:true,knowledge:"2025-04",release_date:"2026-06-02",last_updated:"2026-06-02",modalities:{input:["text","image","video"],output:["text"]},open_weights:false,limit:{context:1e6,output:64e3}},"alibaba/qwen3.8-max-0902":{id:"alibaba/qwen3.8-max-0902",name:"Qwen3.8 Max 0902",description:"2026-09-02 upgraded snapshot of Qwen3.8 Max with stronger coding, collaborative agents, and multimodal document understanding",family:"qwen",attachment:true,reasoning:true,tool_call:true,temperature:true,release_date:"2026-09-02",last_updated:"2026-09-02",modalities:{input:["text","image","video","pdf"],output:["text"]},open_weights:false,limit:{context:1e6,output:131072}},"mixedbread/toast-1":{id:"mixedbread/toast-1",name:"Toast 1",description:"Specialized search model for knowledge-intensive questions, multi-step retrieval, and evidence synthesis",attachment:false,reasoning:false,tool_call:true,release_date:"2026-08-13",last_updated:"2026-08-13",modalities:{input:["text"],output:["text"]},open_weights:false,limit:{context:131e3,output:4e3}},"vispark/vision-large":{id:"vispark/vision-large",name:"Vision Large",description:"Most capable Vision model for complex reasoning, detailed media analysis, and structured output over a 1M-token context window.",attachment:true,reasoning:true,tool_call:true,structured_output:true,temperature:true,release_date:"2024-05-15",last_updated:"2026-09",modalities:{input:["text","image","audio","video","pdf"],output:["text"]},open_weights:false,limit:{context:1e6,output:65536}},"vispark/vision-small":{id:"vispark/vision-small",name:"Vision Small",description:"Fast, low-cost multimodal model for understanding text, images, audio, video, and PDFs, with tool calling and a 1M-token context window.",attachment:true,reasoning:true,tool_call:true,structured_output:true,temperature:true,release_date:"2024-05-15",last_updated:"2026-09",modalities:{input:["text","image","audio","video","pdf"],output:["text"]},open_weights:false,limit:{context:1e6,output:65536}},"vispark/vision-medium":{id:"vispark/vision-medium",name:"Vision Medium",description:"Balanced multimodal model pairing a 1M-token context window with deeper reasoning for analysis, content creation, and tool use across text, image, audio, video, and PDF inputs.",attachment:true,reasoning:true,tool_call:true,structured_output:true,temperature:true,release_date:"2024-05-15",last_updated:"2026-09",modalities:{input:["text","image","audio","video","pdf"],output:["text"]},open_weights:false,limit:{context:1e6,output:65536}},"motif-technologies/motif-3":{id:"motif-technologies/motif-3",name:"Motif 3",description:"Motif 3 is a large-scale, decoder-only Mixture-of-Experts (MoE) language model with 314 billion total parameters and 13.2 billion parameters activated per token.",family:"motif",attachment:false,reasoning:true,tool_call:true,structured_output:false,temperature:true,release_date:"2026-08-07",last_updated:"2026-08-07",modalities:{input:["text"],output:["text"]},open_weights:true,limit:{context:262144,output:262144},license:"MIT",weights:[{label:"Model weights",url:"https://huggingface.co/Motif-Technologies/Motif-3",format:"safetensors"}]},"trendyol/asure-12b":{id:"trendyol/asure-12b",name:"Trendyol Asure 12B",description:"Turkish-language multimodal instruct model built on Gemma 3 12B for e-commerce text, chat, and image-text tasks",family:"gemma",attachment:true,reasoning:false,tool_call:false,temperature:true,release_date:"2026-02-19",last_updated:"2026-02-20",modalities:{input:["text","image"],output:["text"]},open_weights:true,limit:{context:131072},license:"Gemma",weights:[{label:"Hugging Face",url:"https://huggingface.co/Trendyol/Trendyol-LLM-Asure-12B"}]},"upstage/solar-pro4":{id:"upstage/solar-pro4",name:"Solar Pro 4",description:"Upstage's flagship model, specialized for agentic use",family:"solar-pro",attachment:false,reasoning:true,tool_call:true,structured_output:true,temperature:true,knowledge:"2026-02",release_date:"2026-08-06",last_updated:"2026-08-06",modalities:{input:["text"],output:["text"]},open_weights:false,limit:{context:524288,output:131072}},"upstage/solar-pro3":{id:"upstage/solar-pro3",name:"Solar Pro 3",description:"Flagship model for demanding analysis, coding, and production agent workflows",family:"solar-pro",attachment:false,reasoning:true,tool_call:true,temperature:true,knowledge:"2025-03",release_date:"2026-01",last_updated:"2026-01",modalities:{input:["text"],output:["text"]},open_weights:false,limit:{context:131072,output:8192}},"upstage/solar-pro2":{id:"upstage/solar-pro2",name:"Solar Pro 2",description:"Flagship model for demanding analysis, coding, and production agent workflows",family:"solar-pro",attachment:false,reasoning:true,tool_call:true,temperature:true,knowledge:"2025-03",release_date:"2025-05-20",last_updated:"2025-05-20",modalities:{input:["text"],output:["text"]},open_weights:false,limit:{context:65536,output:8192}},"google/gemini-2.5-flash-tts":{id:"google/gemini-2.5-flash-tts",name:"Gemini 2.5 Flash TTS",description:"Speech generation model for controllable voice, narration, and audio delivery",family:"gemini-flash",attachment:false,reasoning:false,tool_call:false,temperature:true,knowledge:"2025-01",release_date:"2025-09-30",last_updated:"2025-12-10",modalities:{input:["text"],output:["audio"]},open_weights:false,limit:{context:32768,output:16384}},"google/gemini-flash-latest":{id:"google/gemini-flash-latest",name:"Gemini Flash Latest",description:"High-efficiency Gemini model for agentic workflows, coding, and multimodal reasoning",family:"gemini-flash",attachment:true,reasoning:true,tool_call:true,structured_output:true,temperature:true,knowledge:"2026-03",release_date:"2026-08-13",last_updated:"2026-08-13",modalities:{input:["text","image","video","audio","pdf"],output:["text"]},open_weights:false,limit:{context:1048576,output:65536}},"google/gemma-4-31b-it":{id:"google/gemma-4-31b-it",name:"Gemma 4 31B IT",description:"Largest Gemma 4 instruction model for open, self-hosted chat and reasoning",family:"gemma",attachment:true,reasoning:true,tool_call:true,structured_output:true,temperature:true,release_date:"2026-04-02",last_updated:"2026-04-02",modalities:{input:["text","image"],output:["text"]},open_weights:true,limit:{context:262144,output:32768},weights:[{label:"Hugging Face",url:"https://huggingface.co/google/gemma-4-31B-it"}]},"google/gemini-omni-flash-preview":{id:"google/gemini-omni-flash-preview",name:"Gemini Omni Flash Preview",description:"Video generation and editing model for fast, conversational text- and image-to-video workflows",family:"gemini",attachment:true,reasoning:true,tool_call:false,release_date:"2026-06-30",last_updated:"2026-06-30",modalities:{input:["text","image","video"],output:["video"]},open_weights:false,limit:{context:1048576,output:57920},benchmarks:[{name:"LMArena Text-to-Video Arena",score:1527,metric:"Elo",source:"https://venturebeat.com/technology/googles-gemini-omni-flash-hits-the-api-turning-enterprise-video-production-into-a-conversation",date:"2026-06-30"}]},"google/gemini-3.1-flash-image-preview":{id:"google/gemini-3.1-flash-image-preview",name:"Nano Banana 2 Preview",description:"Image model for prompt-driven generation, editing, and visual design workflows",family:"gemini-flash",attachment:true,reasoning:true,tool_call:false,temperature:true,knowledge:"2025-01",release_date:"2026-02-26",last_updated:"2026-02-26",modalities:{input:["text","image","pdf"],output:["text","image"]},open_weights:false,limit:{context:65536,output:65536}},"google/veo-3.1-lite-generate-preview":{id:"google/veo-3.1-lite-generate-preview",name:"Veo 3.1 Lite Preview",description:"Video model for prompt-guided generation, editing, and motion workflows",family:"veo",attachment:true,reasoning:false,tool_call:false,temperature:false,release_date:"2026-03-31",last_updated:"2026-03-31",modalities:{input:["text","image"],output:["video"]},open_weights:false,limit:{context:1024,output:0}},"google/lyria-3-pro-preview":{id:"google/lyria-3-pro-preview",name:"Lyria 3 Pro Preview",description:"Music generation model for full-length songs from text or images with vocals and structure",family:"lyria",attachment:true,reasoning:false,tool_call:false,structured_output:false,temperature:true,release_date:"2026-03-25",last_updated:"2026-03-25",modalities:{input:["text","image"],output:["text","audio"]},open_weights:false,limit:{context:131072,output:8192}},"google/gemini-3.1-flash-tts-preview":{id:"google/gemini-3.1-flash-tts-preview",name:"Gemini 3.1 Flash TTS Preview",description:"Low-latency speech generation with steerable prompts and expressive audio tags",family:"gemini-flash",attachment:false,reasoning:false,tool_call:false,temperature:true,knowledge:"2025-01",release_date:"2026-04-15",last_updated:"2026-04-15",modalities:{input:["text"],output:["audio"]},open_weights:false,limit:{context:8192,output:16384}},"google/gemini-3.5-transcribe-live":{id:"google/gemini-3.5-transcribe-live",name:"Gemini 3.5 Transcribe Live",description:"Speech transcription model for accurate audio-to-text and captioning workflows",family:"gemini",attachment:false,reasoning:false,tool_call:false,release_date:"2026-08-26",last_updated:"2026-08-26",modalities:{input:["audio"],output:["text"]},open_weights:false,limit:{context:0,output:0}},"google/gemma-3-27b-it":{id:"google/gemma-3-27b-it",name:"Gemma 3 27B IT",description:"Largest open Gemma 3 instruction model for multilingual text generation and visual understanding",family:"gemma",attachment:true,reasoning:false,tool_call:true,temperature:true,knowledge:"2024-08",release_date:"2025-03-12",last_updated:"2025-03-12",modalities:{input:["text","image"],output:["text"]},open_weights:true,limit:{context:131072,output:131072},weights:[{label:"Hugging Face",url:"https://huggingface.co/google/gemma-3-27b-it"}]},"google/gemini-3-pro-preview":{id:"google/gemini-3-pro-preview",name:"Gemini 3 Pro Preview",description:"Preview Gemini flagship for complex reasoning, coding, and rich multimodal prompts",family:"gemini-pro",attachment:true,reasoning:true,tool_call:true,structured_output:true,temperature:true,knowledge:"2025-01",release_date:"2025-11-18",last_updated:"2025-11-18",modalities:{input:["text","image","video","audio","pdf"],output:["text"]},open_weights:false,limit:{context:1048576,output:65536},benchmarks:[{name:"SWE-Bench Pro",score:43.3,metric:"resolve rate",dataset:"public",source:"https://labs.scale.com/leaderboard/swe_bench_pro_public"}]},"google/gemini-2.5-flash-image":{id:"google/gemini-2.5-flash-image",name:"Nano Banana",description:"Nano Banana image model for fast generation, edits, and character-consistent assets",family:"gemini-flash",attachment:true,reasoning:true,tool_call:false,temperature:true,knowledge:"2024-06",release_date:"2025-08-26",last_updated:"2025-08-26",modalities:{input:["text","image"],output:["text","image"]},open_weights:false,limit:{context:32768,output:32768}},"google/gemini-flash-lite-latest":{id:"google/gemini-flash-lite-latest",name:"Gemini Flash-Lite Latest",description:"Fast Gemini model balancing multimodal reasoning, tool use, and cost",family:"gemini-flash-lite",attachment:true,reasoning:true,tool_call:true,structured_output:true,temperature:true,knowledge:"2026-03",release_date:"2026-07-21",last_updated:"2026-07-21",modalities:{input:["text","image","video","audio","pdf"],output:["text"]},open_weights:false,limit:{context:1048576,output:65536}},"google/gemini-embedding-2":{id:"google/gemini-embedding-2",name:"Gemini Embedding 2",description:"Multimodal embedding model mapping text, images, video, audio, and PDFs into a unified embedding space",family:"gemini",attachment:true,reasoning:false,tool_call:false,temperature:false,knowledge:"2025-11",release_date:"2026-04-22",last_updated:"2026-04-22",modalities:{input:["text","image","audio","video","pdf"],output:["text"]},open_weights:false,limit:{context:8192,output:3072}},"google/gemini-3.6-flash":{id:"google/gemini-3.6-flash",name:"Gemini 3.6 Flash",description:"Fast Gemini model balancing multimodal reasoning, tool use, and cost",family:"gemini-flash",attachment:true,reasoning:true,tool_call:true,structured_output:true,temperature:true,knowledge:"2026-03",release_date:"2026-07-21",last_updated:"2026-07-21",modalities:{input:["text","image","video","audio","pdf"],output:["text"]},open_weights:false,limit:{context:1048576,output:65536},benchmarks:[{name:"SWE-Bench Pro",score:58.7,metric:"resolve rate",harness:"Antigravity",source:"https://deepmind.google/models/evals-methodology/gemini-3-6-flash/",date:"2026-07-21"},{name:"DeepSWE",score:49,metric:"resolve rate",variant:"high reasoning",version:"1.1",source:"https://deepmind.google/models/evals-methodology/gemini-3-6-flash/",date:"2026-07-21"},{name:"Terminal-Bench",score:78,metric:"accuracy",harness:"Terminus 2",version:"2.1",source:"https://deepmind.google/models/evals-methodology/gemini-3-6-flash/",date:"2026-07-21"},{name:"MLE-Bench",score:63.9,metric:"average position score",dataset:"Partial 30",source:"https://deepmind.google/models/evals-methodology/gemini-3-6-flash/",date:"2026-07-21"},{name:"GDPval-AA",score:1421,metric:"Elo",version:"v2",source:"https://deepmind.google/models/evals-methodology/gemini-3-6-flash/",date:"2026-07-21"},{name:"OSWorld-Verified",score:83,metric:"success rate",source:"https://deepmind.google/models/evals-methodology/gemini-3-6-flash/",date:"2026-07-21"},{name:"CharXiv Reasoning",score:85.2,metric:"accuracy",variant:"no tools",source:"https://deepmind.google/models/evals-methodology/gemini-3-6-flash/",date:"2026-07-21"},{name:"CharXiv Reasoning",score:89.4,metric:"accuracy",variant:"with tools",source:"https://deepmind.google/models/evals-methodology/gemini-3-6-flash/",date:"2026-07-21"},{name:"GDM-MRCR",score:91.8,metric:"accuracy",variant:"128k average, 8-needle",version:"v2",source:"https://deepmind.google/models/evals-methodology/gemini-3-6-flash/",date:"2026-07-21"},{name:"GDM-MRCR",score:54,metric:"accuracy",variant:"1M pointwise, 8-needle",version:"v2",source:"https://deepmind.google/models/evals-methodology/gemini-3-6-flash/",date:"2026-07-21"}]},"google/gemini-2.0-flash":{id:"google/gemini-2.0-flash",name:"Gemini 2.0 Flash",description:"Earlier Gemini Flash workhorse for responsive multimodal apps and tool use",family:"gemini-flash",attachment:true,reasoning:false,tool_call:true,structured_output:true,temperature:true,knowledge:"2024-06",release_date:"2024-12-11",last_updated:"2024-12-11",modalities:{input:["text","image","audio","video","pdf"],output:["text"]},open_weights:false,limit:{context:1048576,output:8192}},"google/gemini-robotics-er-1.6-preview":{id:"google/gemini-robotics-er-1.6-preview",name:"Gemini Robotics-ER 1.6 Preview",description:"Vision-language model for embodied reasoning: spatial understanding, task planning, and physical-world agentic robotics",family:"gemini",attachment:true,reasoning:true,tool_call:true,structured_output:true,temperature:true,knowledge:"2025-01",release_date:"2026-04-14",last_updated:"2026-04-14",modalities:{input:["text","image","video","audio"],output:["text"]},open_weights:false,limit:{context:131072,output:65536}},"google/gemma-4-26b-a4b-it":{id:"google/gemma-4-26b-a4b-it",name:"Gemma 4 26B A4B IT",description:"Open Gemma instruction model for efficient chat and self-hosted deployments",family:"gemma",attachment:true,reasoning:true,tool_call:true,structured_output:true,temperature:true,release_date:"2026-04-02",last_updated:"2026-04-02",modalities:{input:["text","image"],output:["text"]},open_weights:true,limit:{context:262144,output:32768},weights:[{label:"Hugging Face",url:"https://huggingface.co/google/gemma-4-26B-A4B-it"}]},"google/gemini-3-pro-image-preview":{id:"google/gemini-3-pro-image-preview",name:"Nano Banana Pro Preview",description:"Nano Banana Pro for higher-fidelity image generation and design-heavy edits",family:"gemini-pro",attachment:true,reasoning:true,tool_call:false,temperature:true,knowledge:"2025-01",release_date:"2025-11-20",last_updated:"2025-11-20",modalities:{input:["text","image"],output:["text","image"]},open_weights:false,limit:{context:65536,output:32768}},"google/gemini-3.5-flash-lite":{id:"google/gemini-3.5-flash-lite",name:"Gemini 3.5 Flash Lite",description:"Fast Gemini model balancing multimodal reasoning, tool use, and cost",family:"gemini-flash-lite",attachment:true,reasoning:true,tool_call:true,structured_output:true,temperature:true,knowledge:"2026-03",release_date:"2026-07-21",last_updated:"2026-07-21",modalities:{input:["text","image","video","audio","pdf"],output:["text"]},open_weights:false,limit:{context:1048576,output:65536},benchmarks:[{name:"SWE-Bench Pro",score:54.2,metric:"resolve rate",source:"https://deepmind.google/models/model-cards/gemini-3-5-flash-lite/",date:"2026-07-21"},{name:"Terminal-Bench",score:54,metric:"accuracy",harness:"Terminus 2",version:"2.1",source:"https://deepmind.google/models/model-cards/gemini-3-5-flash-lite/",date:"2026-07-21"},{name:"MLE-Bench",score:39.2,metric:"average position score",source:"https://deepmind.google/models/model-cards/gemini-3-5-flash-lite/",date:"2026-07-21"},{name:"GDPval-AA",score:1140,metric:"Elo",version:"v2",source:"https://deepmind.google/models/model-cards/gemini-3-5-flash-lite/",date:"2026-07-21"},{name:"OSWorld-Verified",score:74,metric:"success rate",source:"https://deepmind.google/models/model-cards/gemini-3-5-flash-lite/",date:"2026-07-21"},{name:"CharXiv Reasoning",score:74.5,metric:"accuracy",variant:"no tools",source:"https://deepmind.google/models/model-cards/gemini-3-5-flash-lite/",date:"2026-07-21"},{name:"CharXiv Reasoning",score:76.5,metric:"accuracy",variant:"with tools",source:"https://deepmind.google/models/model-cards/gemini-3-5-flash-lite/",date:"2026-07-21"},{name:"GDM-MRCR",score:72.2,metric:"accuracy",variant:"128k average, 8-needle",version:"v2",source:"https://deepmind.google/models/model-cards/gemini-3-5-flash-lite/",date:"2026-07-21"},{name:"GDM-MRCR",score:21.3,metric:"accuracy",variant:"1M pointwise, 8-needle",version:"v2",source:"https://deepmind.google/models/model-cards/gemini-3-5-flash-lite/",date:"2026-07-21"}]},"google/gemini-2.0-flash-lite":{id:"google/gemini-2.0-flash-lite",name:"Gemini 2.0 Flash-Lite",description:"Low-latency Gemini model for high-volume multimodal and agent workloads",family:"gemini-flash-lite",attachment:true,reasoning:false,tool_call:true,structured_output:true,temperature:true,knowledge:"2024-06",release_date:"2024-12-11",last_updated:"2024-12-11",modalities:{input:["text","image","audio","video","pdf"],output:["text"]},open_weights:false,limit:{context:1048576,output:8192}},"google/gemini-3.1-flash-image":{id:"google/gemini-3.1-flash-image",name:"Nano Banana 2",description:"Image model for prompt-driven generation, editing, and visual design workflows",family:"gemini-flash",attachment:true,reasoning:true,tool_call:false,temperature:true,knowledge:"2025-01",release_date:"2026-05-28",last_updated:"2026-05-28",modalities:{input:["text","image","video","pdf"],output:["text","image"]},open_weights:false,limit:{context:131072,output:32768}},"google/lyria-3-clip-preview":{id:"google/lyria-3-clip-preview",name:"Lyria 3 Clip Preview",description:"Music generation model for short 30-second clips, loops, and previews from text or image prompts",family:"lyria",attachment:true,reasoning:false,tool_call:false,structured_output:false,temperature:true,release_date:"2026-03-25",last_updated:"2026-03-25",modalities:{input:["text","image"],output:["text","audio"]},open_weights:false,limit:{context:131072,output:65536}},"google/gemini-3.1-pro-preview":{id:"google/gemini-3.1-pro-preview",name:"Gemini 3.1 Pro Preview",description:"Reasoning-first Gemini preview for agentic coding and complex problem solving",family:"gemini-pro",attachment:true,reasoning:true,tool_call:true,structured_output:true,temperature:true,knowledge:"2025-01",release_date:"2026-02-19",last_updated:"2026-02-19",modalities:{input:["text","image","video","audio","pdf"],output:["text"]},open_weights:false,limit:{context:1048576,output:65536},benchmarks:[{name:"SWE-Bench Pro",score:54.2,metric:"resolve rate",source:"https://www.anthropic.com/news/claude-opus-4-8",date:"2026-05-28"},{name:"Terminal-Bench",score:70.3,metric:"success rate",harness:"Terminus-2",version:"2.1",source:"https://www.anthropic.com/news/claude-opus-4-8",date:"2026-05-28"},{name:"SWE-Bench Pro",score:46.1,metric:"resolve rate",dataset:"public",source:"https://labs.scale.com/leaderboard/swe_bench_pro_public"},{name:"SWE-Atlas Codebase QnA",score:13.5,metric:"score",harness:"Mini-SWE-Agent",source:"https://labs.scale.com/leaderboard/sweatlas-qna"},{name:"SWE-Atlas Refactoring",score:33.81,metric:"score",harness:"Gemini CLI",source:"https://labs.scale.com/leaderboard/sweatlas-refactoring"},{name:"SWE-Atlas Test Writing",score:29.84,metric:"score",harness:"Mini-SWE-Agent",source:"https://labs.scale.com/leaderboard/sweatlas-tw"},{name:"Artificial Analysis Coding Agent Index",score:43,metric:"average pass@1",harness:"Gemini CLI",variant:"high",source:"https://artificialanalysis.ai/agents/coding-agents"},{name:"SWE-Atlas Codebase QnA",score:45.6,metric:"pass@1",harness:"Gemini CLI",variant:"high",source:"https://artificialanalysis.ai/agents/coding-agents"},{name:"SWE-Bench Pro",score:15.1,metric:"pass@1",harness:"Gemini CLI",variant:"high",dataset:"hard-aa",source:"https://artificialanalysis.ai/agents/coding-agents"},{name:"Terminal-Bench",score:68.3,metric:"pass@1",harness:"Gemini CLI",variant:"high",version:"2.1",source:"https://artificialanalysis.ai/agents/coding-agents"},{name:"GPQA Diamond",score:94.3,metric:"accuracy",source:"https://openai.com/index/introducing-gpt-5-5/",date:"2026-04-23"},{name:"Humanity's Last Exam",score:44.4,metric:"accuracy",dataset:"full set, text + MM",source:"https://deepmind.google/models/gemini/flash/",date:"2026-05-19"},{name:"ARC-AGI-2",score:77.1,metric:"accuracy",source:"https://deepmind.google/models/gemini/flash/",date:"2026-05-19"},{name:"MMMU Pro",score:80.5,metric:"accuracy",variant:"no tools",source:"https://deepmind.google/models/gemini/flash/",date:"2026-05-19"},{name:"MCP Atlas",score:78.2,metric:"success rate",source:"https://deepmind.google/models/gemini/flash/",date:"2026-05-19"},{name:"OSWorld-Verified",score:76.2,metric:"success rate",source:"https://deepmind.google/models/gemini/flash/",date:"2026-05-19"},{name:"CharXiv Reasoning",score:83.3,metric:"accuracy",variant:"no tools",source:"https://deepmind.google/models/gemini/flash/",date:"2026-05-19"},{name:"GDPval-AA",score:1314,metric:"Elo",source:"https://deepmind.google/models/gemini/flash/",date:"2026-05-19"}]},"google/gemma-3-12b-it":{id:"google/gemma-3-12b-it",name:"Gemma 3 12B IT",description:"Open multimodal Gemma instruction model for multilingual text generation and image understanding",family:"gemma",attachment:true,reasoning:false,tool_call:true,temperature:true,knowledge:"2024-08",release_date:"2025-03-12",last_updated:"2025-03-12",modalities:{input:["text","image"],output:["text"]},open_weights:true,limit:{context:131072,output:131072},weights:[{label:"Hugging Face",url:"https://huggingface.co/google/gemma-3-12b-it"}]},"google/gemini-2.5-computer-use-preview-10-2025":{id:"google/gemini-2.5-computer-use-preview-10-2025",name:"Gemini 2.5 Computer Use Preview",description:"Specialized Gemini 2.5 model for browser-control agents that automate UI tasks",family:"gemini-pro",attachment:true,reasoning:true,tool_call:true,temperature:true,knowledge:"2025-01",release_date:"2025-10-07",last_updated:"2025-10-07",modalities:{input:["text","image"],output:["text"]},open_weights:false,limit:{context:128e3,output:64e3}},"google/gemini-3.5-flash":{id:"google/gemini-3.5-flash",name:"Gemini 3.5 Flash",description:"Fast Gemini model balancing multimodal reasoning, tool use, and cost",family:"gemini-flash",attachment:true,reasoning:true,tool_call:true,structured_output:true,temperature:true,knowledge:"2025-01",release_date:"2026-05-19",last_updated:"2026-05-19",modalities:{input:["text","image","video","audio","pdf"],output:["text"]},open_weights:false,limit:{context:1048576,output:65536},benchmarks:[{name:"Terminal-Bench",score:76.2,metric:"success rate",harness:"Terminus-2",version:"2.1",source:"https://deepmind.google/models/gemini/flash/",date:"2026-05-19"},{name:"SWE-Bench Pro",score:55.1,metric:"resolve rate",variant:"single attempt",dataset:"public",source:"https://deepmind.google/models/gemini/flash/",date:"2026-05-19"},{name:"MCP Atlas",score:83.6,metric:"success rate",source:"https://deepmind.google/models/gemini/flash/",date:"2026-05-19"},{name:"Toolathlon",score:56.5,metric:"success rate",source:"https://deepmind.google/models/gemini/flash/",date:"2026-05-19"},{name:"OSWorld-Verified",score:78.4,metric:"success rate",source:"https://deepmind.google/models/gemini/flash/",date:"2026-05-19"},{name:"MMMU Pro",score:83.6,metric:"accuracy",variant:"no tools",source:"https://deepmind.google/models/gemini/flash/",date:"2026-05-19"},{name:"CharXiv Reasoning",score:84.2,metric:"accuracy",variant:"no tools",source:"https://deepmind.google/models/gemini/flash/",date:"2026-05-19"},{name:"Humanity's Last Exam",score:40.2,metric:"accuracy",dataset:"full set, text + MM",source:"https://deepmind.google/models/gemini/flash/",date:"2026-05-19"},{name:"ARC-AGI-2",score:72.1,metric:"accuracy",source:"https://deepmind.google/models/gemini/flash/",date:"2026-05-19"},{name:"GDPval-AA",score:1656,metric:"Elo",source:"https://deepmind.google/models/gemini/flash/",date:"2026-05-19"}]},"google/gemini-2.5-pro":{id:"google/gemini-2.5-pro",name:"Gemini 2.5 Pro",description:"Google's proven reasoning model for coding, math, and multimodal analysis",family:"gemini-pro",attachment:true,reasoning:true,tool_call:true,structured_output:true,temperature:true,knowledge:"2025-01",release_date:"2025-06-17",last_updated:"2025-06-17",modalities:{input:["text","image","audio","video","pdf"],output:["text"]},open_weights:false,limit:{context:1048576,output:65536},benchmarks:[{name:"Aider Polyglot",score:83.1,metric:"percent correct",source:"https://aider.chat/docs/leaderboards/",date:"2025-06-06"},{name:"Artificial Analysis Coding Index",score:32,metric:"index",source:"https://openrouter.ai/google/gemini-2.5-pro/benchmarks",date:"2026-06-02"},{name:"SciCode",score:42.8,metric:"percent correct",source:"https://openrouter.ai/google/gemini-2.5-pro/benchmarks",date:"2026-06-02"},{name:"Terminal-Bench Hard",score:26.5,metric:"success rate",source:"https://openrouter.ai/google/gemini-2.5-pro/benchmarks",date:"2026-06-02"}]},"google/gemini-3-pro-image":{id:"google/gemini-3-pro-image",name:"Nano Banana Pro",description:"Nano Banana Pro for higher-fidelity image generation and design-heavy edits",family:"gemini-pro",attachment:true,reasoning:true,tool_call:false,temperature:true,knowledge:"2025-01",release_date:"2026-05-28",last_updated:"2026-05-28",modalities:{input:["text","image"],output:["text","image"]},open_weights:false,limit:{context:65536,output:32768}},"google/gemini-2.5-flash":{id:"google/gemini-2.5-flash",name:"Gemini 2.5 Flash",description:"Fast Gemini workhorse for multimodal apps where latency and price matter",family:"gemini-flash",attachment:true,reasoning:true,tool_call:true,structured_output:true,temperature:true,knowledge:"2025-01",release_date:"2025-06-17",last_updated:"2025-06-17",modalities:{input:["text","image","audio","video","pdf"],output:["text"]},open_weights:false,limit:{context:1048576,output:65536},benchmarks:[{name:"Aider Polyglot",score:55.1,metric:"percent correct",source:"https://aider.chat/docs/leaderboards/",date:"2025-05-25"},{name:"Artificial Analysis Coding Index",score:22.2,metric:"index",source:"https://openrouter.ai/google/gemini-2.5-flash/benchmarks",date:"2026-06-02"},{name:"SciCode",score:39.4,metric:"percent correct",source:"https://openrouter.ai/google/gemini-2.5-flash/benchmarks",date:"2026-06-02"},{name:"Terminal-Bench Hard",score:13.6,metric:"success rate",source:"https://openrouter.ai/google/gemini-2.5-flash/benchmarks",date:"2026-06-02"}]},"google/gemini-3.1-flash-lite-image":{id:"google/gemini-3.1-flash-lite-image",name:"Nano Banana 2 Lite",description:"Fastest, most cost-efficient Gemini image model for high-volume 1K generation and editing",family:"gemini-flash-lite",attachment:true,reasoning:true,tool_call:true,structured_output:false,temperature:true,knowledge:"2025-01",release_date:"2026-06-30",last_updated:"2026-06-30",modalities:{input:["text","image"],output:["text","image"]},open_weights:false,limit:{context:65536,output:4096}},"google/deep-research-preview-04-2026":{id:"google/deep-research-preview-04-2026",name:"Gemini Deep Research Preview",description:"Agentic model for autonomous multi-step research, synthesis, and cited reports",family:"gemini-pro",attachment:true,reasoning:true,tool_call:true,temperature:false,knowledge:"2025-01",release_date:"2026-04-21",last_updated:"2026-04-21",modalities:{input:["text","image","video","audio","pdf"],output:["text","image"]},open_weights:false,limit:{context:1048576,output:65536}},"google/deep-research-max-preview-04-2026":{id:"google/deep-research-max-preview-04-2026",name:"Deep Research Max Preview",description:"Maximum-comprehensiveness agentic researcher for multi-step investigation, synthesis, and cited reports",family:"gemini-pro",attachment:true,reasoning:true,tool_call:true,temperature:false,knowledge:"2025-01",release_date:"2026-04-21",last_updated:"2026-04-21",modalities:{input:["text","image","video","audio","pdf"],output:["text","image"]},open_weights:false,limit:{context:1048576,output:65536}},"google/veo-3.1-fast-generate-preview":{id:"google/veo-3.1-fast-generate-preview",name:"Veo 3.1 Fast Preview",description:"Video model for prompt-guided generation, editing, and motion workflows",family:"veo",attachment:true,reasoning:false,tool_call:false,temperature:false,release_date:"2025-10-15",last_updated:"2026-01-01",modalities:{input:["text","image","video"],output:["video"]},open_weights:false,limit:{context:1024,output:0}},"google/gemma-4-12b-it":{id:"google/gemma-4-12b-it",name:"Gemma 4 12B IT",description:"Compact Gemma 4 instruction model for open, self-hosted chat and reasoning",family:"gemma",attachment:true,reasoning:true,tool_call:true,structured_output:true,temperature:true,release_date:"2026-06-09",last_updated:"2026-06-09",modalities:{input:["text","image"],output:["text"]},open_weights:true,limit:{context:262144,output:32768},weights:[{label:"Hugging Face",url:"https://huggingface.co/google/gemma-4-12B-it"}]},"google/gemini-3.7-flash":{id:"google/gemini-3.7-flash",name:"Gemini 3.7 Flash",description:"High-efficiency Gemini model for agentic workflows, coding, and multimodal reasoning",family:"gemini-flash",attachment:true,reasoning:true,tool_call:true,structured_output:true,temperature:true,knowledge:"2026-03",release_date:"2026-08-13",last_updated:"2026-08-13",modalities:{input:["text","image","video","audio","pdf"],output:["text"]},open_weights:false,limit:{context:1048576,output:65536},benchmarks:[{name:"FrontierCode",score:43.6,metric:"score",version:"1.1 Main",source:"https://deepmind.google/models/model-cards/gemini-3-7-flash/",date:"2026-08-13"},{name:"DeepSWE",score:65.3,metric:"resolve rate",version:"1.1",source:"https://deepmind.google/models/model-cards/gemini-3-7-flash/",date:"2026-08-13"},{name:"Terminal-Bench",score:85.8,metric:"accuracy",version:"2.1",source:"https://deepmind.google/models/model-cards/gemini-3-7-flash/",date:"2026-08-13"},{name:"AutomationBench",score:30.4,metric:"accuracy",dataset:"private set",source:"https://deepmind.google/models/model-cards/gemini-3-7-flash/",date:"2026-08-13"},{name:"GDP.pdf",score:34,metric:"accuracy",source:"https://deepmind.google/models/model-cards/gemini-3-7-flash/",date:"2026-08-13"},{name:"GDM-MRCR",score:97,metric:"accuracy",variant:"128k average, 8-needle",version:"v2",source:"https://deepmind.google/models/model-cards/gemini-3-7-flash/",date:"2026-08-13"}]},"google/gemma-4-E2B-it":{id:"google/gemma-4-E2B-it",name:"Gemma 4 E2B IT",description:"Open Gemma instruction model for efficient chat and self-hosted deployments",family:"gemma",attachment:true,reasoning:true,tool_call:true,structured_output:true,temperature:true,release_date:"2026-04-02",last_updated:"2026-04-02",modalities:{input:["text","image","audio"],output:["text"]},open_weights:true,limit:{context:131072,output:8192},weights:[{label:"Hugging Face",url:"https://huggingface.co/google/gemma-4-E2B-it"}]},"google/veo-3.1-generate-preview":{id:"google/veo-3.1-generate-preview",name:"Veo 3.1 Preview",description:"Video model for prompt-guided generation, editing, and motion workflows",family:"veo",attachment:true,reasoning:false,tool_call:false,temperature:false,release_date:"2025-10-15",last_updated:"2026-01",modalities:{input:["text","image"],output:["video"]},open_weights:false,limit:{context:1024,output:1}},"google/gemini-3.1-pro-preview-customtools":{id:"google/gemini-3.1-pro-preview-customtools",name:"Gemini 3.1 Pro Preview Custom Tools",description:"Advanced Gemini model for complex reasoning, coding, and multimodal analysis",family:"gemini-pro",attachment:true,reasoning:true,tool_call:true,structured_output:true,temperature:true,knowledge:"2025-01",release_date:"2026-02-19",last_updated:"2026-02-19",modalities:{input:["text","image","video","audio","pdf"],output:["text"]},open_weights:false,limit:{context:1048576,output:65536}},"google/gemini-3-flash-preview":{id:"google/gemini-3-flash-preview",name:"Gemini 3 Flash Preview",description:"New Gemini flash lane bringing frontier-style multimodal reasoning to cheaper runs",family:"gemini-flash",attachment:true,reasoning:true,tool_call:true,structured_output:true,temperature:true,knowledge:"2025-01",release_date:"2025-12-17",last_updated:"2025-12-17",modalities:{input:["text","image","video","audio","pdf"],output:["text"]},open_weights:false,limit:{context:1048576,output:65536},benchmarks:[{name:"SWE-Bench Pro",score:34.63,metric:"resolve rate",dataset:"public",source:"https://labs.scale.com/leaderboard/swe_bench_pro_public"},{name:"SWE-Atlas Codebase QnA",score:8.2,metric:"score",harness:"Mini-SWE-Agent",source:"https://labs.scale.com/leaderboard/sweatlas-qna"},{name:"SWE-Atlas Refactoring",score:10,metric:"score",harness:"Mini-SWE-Agent",source:"https://labs.scale.com/leaderboard/sweatlas-refactoring"},{name:"SWE-Atlas Test Writing",score:30.3,metric:"score",harness:"Mini-SWE-Agent",source:"https://labs.scale.com/leaderboard/sweatlas-tw"}]},"google/gemini-3.8-flash":{id:"google/gemini-3.8-flash",name:"Gemini 3.8 Flash",description:"Google's most intelligent Flash model, engineered for long-horizon software engineering, autonomous agents, and complex enterprise workflows",family:"gemini-flash",attachment:true,reasoning:true,tool_call:true,structured_output:true,temperature:true,release_date:"2026-09-02",last_updated:"2026-09-02",modalities:{input:["text","image","video","audio","pdf"],output:["text"]},open_weights:false,limit:{context:1048576,output:65536},benchmarks:[{name:"DeepSWE",score:73.7,metric:"pass@1",harness:"mini-swe-agent",variant:"high thinking",version:"1.1",source:"https://blog.google/innovation-and-ai/models-and-research/gemini-models/3-8-flash-and-3-8-flash-cyber/"},{name:"GDPval-AA",score:1545,metric:"Elo",version:"2",source:"https://blog.google/innovation-and-ai/models-and-research/gemini-models/3-8-flash-and-3-8-flash-cyber/"},{name:"Finance Agent",score:61.4,metric:"pass@1",version:"2",source:"https://blog.google/innovation-and-ai/models-and-research/gemini-models/3-8-flash-and-3-8-flash-cyber/"},{name:"Harvey Legal Agent Benchmark",score:10,metric:"all-pass rate",source:"https://blog.google/innovation-and-ai/models-and-research/gemini-models/3-8-flash-and-3-8-flash-cyber/"},{name:"Terminal-Bench",score:89.4,metric:"pass@1",harness:"Terminus 2",version:"2.1",source:"https://blog.google/innovation-and-ai/models-and-research/gemini-models/3-8-flash-and-3-8-flash-cyber/"},{name:"Terminal-Bench",score:19.1,metric:"pass@1",version:"4.0",source:"https://blog.google/innovation-and-ai/models-and-research/gemini-models/3-8-flash-and-3-8-flash-cyber/"},{name:"GDP.PDF",score:35,metric:"all-pass rate",source:"https://blog.google/innovation-and-ai/models-and-research/gemini-models/3-8-flash-and-3-8-flash-cyber/"},{name:"CharXiv Reasoning",score:86.2,metric:"pass@1",variant:"without tools",source:"https://blog.google/innovation-and-ai/models-and-research/gemini-models/3-8-flash-and-3-8-flash-cyber/"},{name:"LVBench",score:87.8,metric:"pass@1",variant:"agentic",source:"https://blog.google/innovation-and-ai/models-and-research/gemini-models/3-8-flash-and-3-8-flash-cyber/"},{name:"LVBench",score:87.1,metric:"pass@1",variant:"static; 1024 frames; without tools",source:"https://blog.google/innovation-and-ai/models-and-research/gemini-models/3-8-flash-and-3-8-flash-cyber/"},{name:"HLE-Verified",score:54.9,metric:"accuracy",dataset:"1811 verified and revised items",source:"https://blog.google/innovation-and-ai/models-and-research/gemini-models/3-8-flash-and-3-8-flash-cyber/"},{name:"OSWorld",score:59,metric:"partial score",harness:"Gemini CUA",variant:"batched tool calls; best of 3 runs; 500 steps",dataset:"before 2026-08-08 patch",version:"2.0",source:"https://blog.google/innovation-and-ai/models-and-research/gemini-models/3-8-flash-and-3-8-flash-cyber/"},{name:"BioMysteryBench",score:88.8,metric:"pass@1",variant:"with tools",dataset:"human-solvable",source:"https://blog.google/innovation-and-ai/models-and-research/gemini-models/3-8-flash-and-3-8-flash-cyber/"},{name:"BioMysteryBench",score:56.5,metric:"pass@1",variant:"with tools",dataset:"human-difficult",source:"https://blog.google/innovation-and-ai/models-and-research/gemini-models/3-8-flash-and-3-8-flash-cyber/"},{name:"LAB-Bench",score:86.2,metric:"macro-average",variant:"with tools",dataset:"11 subtasks",version:"2",source:"https://blog.google/innovation-and-ai/models-and-research/gemini-models/3-8-flash-and-3-8-flash-cyber/"}]},"google/gemini-3.5-live-translate-preview":{id:"google/gemini-3.5-live-translate-preview",name:"Gemini 3.5 Live Translate Preview",description:"Low-latency audio-to-audio model for real-time speech translation across 70+ languages",family:"gemini-pro",attachment:false,reasoning:false,tool_call:false,temperature:false,knowledge:"2025-01",release_date:"2026-06-09",last_updated:"2026-06-09",modalities:{input:["audio"],output:["audio","text"]},open_weights:false,limit:{context:131072,output:65536}},"google/gemma-3-4b-it":{id:"google/gemma-3-4b-it",name:"Gemma 3 4B IT",description:"Open multimodal Gemma instruction model for efficient text generation and image understanding",family:"gemma",attachment:true,reasoning:false,tool_call:true,temperature:true,knowledge:"2024-08",release_date:"2025-03-12",last_updated:"2025-03-12",modalities:{input:["text","image"],output:["text"]},open_weights:true,limit:{context:131072,output:131072},weights:[{label:"Hugging Face",url:"https://huggingface.co/google/gemma-3-4b-it"}]},"google/gemini-2.5-flash-lite":{id:"google/gemini-2.5-flash-lite",name:"Gemini 2.5 Flash-Lite",description:"Lean Gemini 2.5 lane for cheap multimodal traffic and quick agents",family:"gemini-flash-lite",attachment:true,reasoning:true,tool_call:true,structured_output:true,temperature:true,knowledge:"2025-01",release_date:"2025-06-17",last_updated:"2025-06-17",modalities:{input:["text","image","audio","video","pdf"],output:["text"]},open_weights:false,limit:{context:1048576,output:65536},benchmarks:[{name:"Artificial Analysis Coding Index",score:9.5,metric:"index",source:"https://openrouter.ai/google/gemini-2.5-flash-lite/benchmarks",date:"2026-03-11"},{name:"SciCode",score:19.3,metric:"percent correct",source:"https://openrouter.ai/google/gemini-2.5-flash-lite/benchmarks",date:"2026-03-11"},{name:"Terminal-Bench Hard",score:4.5,metric:"success rate",source:"https://openrouter.ai/google/gemini-2.5-flash-lite/benchmarks",date:"2026-03-11"}]},"google/gemini-2.5-pro-tts":{id:"google/gemini-2.5-pro-tts",name:"Gemini 2.5 Pro TTS",description:"Speech generation model for controllable voice, narration, and audio delivery",family:"gemini-pro",attachment:false,reasoning:false,tool_call:false,temperature:false,knowledge:"2025-01",release_date:"2025-09-30",last_updated:"2025-12-10",modalities:{input:["text"],output:["audio"]},open_weights:false,limit:{context:32768,output:16384}},"google/gemini-embedding-001":{id:"google/gemini-embedding-001",name:"Gemini Embedding 001",description:"Embedding model for semantic search, retrieval, clustering, and ranking pipelines",family:"gemini",attachment:false,reasoning:false,tool_call:false,temperature:false,knowledge:"2025-05",release_date:"2025-05-20",last_updated:"2025-05-20",modalities:{input:["text"],output:["text"]},open_weights:false,limit:{context:2048,output:1}},"google/gemma-4-E4B-it":{id:"google/gemma-4-E4B-it",name:"Gemma 4 E4B IT",description:"Open Gemma instruction model for efficient chat and self-hosted deployments",family:"gemma",attachment:true,reasoning:true,tool_call:true,structured_output:true,temperature:true,release_date:"2026-04-02",last_updated:"2026-04-02",modalities:{input:["text","image","audio"],output:["text"]},open_weights:true,limit:{context:131072,output:8192},weights:[{label:"Hugging Face",url:"https://huggingface.co/google/gemma-4-E4B-it"}]},"google/gemini-3.1-flash-lite-preview":{id:"google/gemini-3.1-flash-lite-preview",name:"Gemini 3.1 Flash Lite Preview",description:"Low-latency Gemini model for high-volume multimodal and agent workloads",family:"gemini-flash-lite",attachment:true,reasoning:true,tool_call:true,structured_output:true,temperature:true,knowledge:"2025-01",release_date:"2026-03-03",last_updated:"2026-03-03",modalities:{input:["text","image","video","audio","pdf"],output:["text"]},open_weights:false,limit:{context:1048576,output:65536}},"google/gemini-3.1-flash-live-preview":{id:"google/gemini-3.1-flash-live-preview",name:"Gemini 3.1 Flash Live Preview",description:"High-quality, low-latency Live API model for real-time dialogue and voice-first AI applications",family:"gemini-flash",attachment:true,reasoning:true,tool_call:true,structured_output:false,temperature:true,knowledge:"2025-01",release_date:"2026-03-26",last_updated:"2026-03-26",modalities:{input:["text","image","video","audio"],output:["text","audio"]},open_weights:false,limit:{context:131072,output:65536}},"google/gemini-3.1-flash-lite":{id:"google/gemini-3.1-flash-lite",name:"Gemini 3.1 Flash Lite",description:"Low-latency Gemini model for high-volume multimodal and agent workloads",family:"gemini-flash-lite",attachment:true,reasoning:true,tool_call:true,structured_output:true,temperature:true,knowledge:"2025-01",release_date:"2026-05-07",last_updated:"2026-05-07",modalities:{input:["text","image","video","audio","pdf"],output:["text"]},open_weights:false,limit:{context:1048576,output:65536}},"writer/palmyra-x4":{id:"writer/palmyra-x4",name:"Palmyra X4",description:"Enterprise language model for workflow automation, coding, data analysis, and tool use",family:"palmyra",attachment:false,reasoning:true,tool_call:true,temperature:true,release_date:"2024-10-09",last_updated:"2025-04-28",modalities:{input:["text"],output:["text"]},open_weights:false,limit:{context:128e3,output:4096}},"writer/palmyra-x5":{id:"writer/palmyra-x5",name:"Palmyra X5",description:"Reasoning model for deliberate analysis, multi-step problem solving, and tool use",family:"palmyra",attachment:true,reasoning:true,tool_call:true,temperature:true,release_date:"2025-04-28",last_updated:"2025-04-28",modalities:{input:["text","image"],output:["text"]},open_weights:false,limit:{context:1e6,output:8192}},"aisingapore/gemma-sea-lion-v4-27b-it":{id:"aisingapore/gemma-sea-lion-v4-27b-it",name:"Gemma-SEA-LION-v4-27B-IT",description:"Gemma 3 27B tuned by AI Singapore for Southeast Asian languages and instruction following",family:"gemma",attachment:false,reasoning:false,tool_call:false,temperature:true,release_date:"2025-09-23",last_updated:"2025-09-23",modalities:{input:["text"],output:["text"]},open_weights:true,limit:{context:128e3,output:128e3},weights:[{label:"Hugging Face",url:"https://huggingface.co/aisingapore/Gemma-SEA-LION-v4-27B-IT"}]},"xai/grok-4.7":{id:"xai/grok-4.7",name:"Grok 4.7",description:"xAI's frontier model for long-running agents, coding, knowledge work, and visual projects",family:"grok",attachment:true,reasoning:true,tool_call:true,structured_output:true,temperature:true,knowledge:"2026-05",release_date:"2026-09-21",last_updated:"2026-09-21",modalities:{input:["text","image","pdf"],output:["text"]},open_weights:false,limit:{context:5e5,output:5e5},benchmarks:[{name:"CursorBench",score:46.3,metric:"score",variant:"xhigh effort",version:"4.0",source:"https://x.ai/news/grok-4-7",date:"2026-09-21"},{name:"DeepSWE",score:71,metric:"score",variant:"high effort",version:"1.1",source:"https://x.ai/news/grok-4-7",date:"2026-09-21"},{name:"EEBench",score:64,metric:"score",variant:"xhigh effort",source:"https://x.ai/news/grok-4-7",date:"2026-09-21"},{name:"AA-Briefcase",score:1657,metric:"Elo",variant:"xhigh effort",version:"1.1",source:"https://x.ai/news/grok-4-7",date:"2026-09-21"},{name:"Terminal-Bench",score:37.6,metric:"score",variant:"xhigh effort",version:"4.0",source:"https://x.ai/news/grok-4-7",date:"2026-09-21"},{name:"Harvey Legal Agent Benchmark",score:19.6,metric:"score",variant:"xhigh effort",source:"https://x.ai/news/grok-4-7",date:"2026-09-21"},{name:"HealthBench",score:56.7,metric:"score",variant:"xhigh effort; professional",source:"https://x.ai/news/grok-4-7",date:"2026-09-21"},{name:"GDPval",score:1695,metric:"Elo",variant:"xhigh effort",source:"https://x.ai/news/grok-4-7",date:"2026-09-21"}]},"xai/grok-4.1-fast-reasoning":{id:"xai/grok-4.1-fast-reasoning",name:"Grok 4.1 Fast (Reasoning)",description:"xAI's fast agentic tool-calling model with a 2M context window and built-in reasoning",family:"grok",attachment:true,reasoning:true,tool_call:true,structured_output:true,temperature:true,release_date:"2025-11-19",last_updated:"2025-11-19",modalities:{input:["text","image"],output:["text"]},open_weights:false,limit:{context:2e6,output:3e4}},"xai/grok-4.3":{id:"xai/grok-4.3",name:"Grok 4.3",description:"xAI's default Grok for chat, coding, agentic tools, and lower hallucination risk",family:"grok",attachment:true,reasoning:true,tool_call:true,structured_output:true,temperature:true,release_date:"2026-04-17",last_updated:"2026-04-17",modalities:{input:["text","image","pdf"],output:["text"]},open_weights:false,limit:{context:1e6,output:3e4},benchmarks:[{name:"Artificial Analysis Intelligence Index",score:53,metric:"index score",version:"4.0",source:"https://artificialanalysis.ai/articles/xai-launches-grok-4-3-with-improved-agentic-performance-and-lower-pricing",date:"2026-04-30"},{name:"GDPval-AA",score:1500,metric:"Elo",source:"https://artificialanalysis.ai/articles/xai-launches-grok-4-3-with-improved-agentic-performance-and-lower-pricing",date:"2026-04-30"},{name:"\u03C4\xB2-Bench Telecom",score:98,metric:"success rate",source:"https://artificialanalysis.ai/articles/xai-launches-grok-4-3-with-improved-agentic-performance-and-lower-pricing",date:"2026-04-30"},{name:"IFBench",score:81,metric:"accuracy",source:"https://artificialanalysis.ai/articles/xai-launches-grok-4-3-with-improved-agentic-performance-and-lower-pricing",date:"2026-04-30"}]},"xai/grok-4.20-0309-reasoning":{id:"xai/grok-4.20-0309-reasoning",name:"Grok 4.20 (Reasoning)",description:"Reasoning Grok for document-heavy analysis and long-horizon tool use",family:"grok",attachment:true,reasoning:true,tool_call:true,structured_output:true,temperature:true,release_date:"2026-03-09",last_updated:"2026-03-09",modalities:{input:["text","image","pdf"],output:["text"]},open_weights:false,limit:{context:1e6,output:3e4}},"xai/grok-imagine-video-1.5":{id:"xai/grok-imagine-video-1.5",name:"Grok Imagine Video 1.5",description:"Video model for image-to-video generation, editing, and extension workflows",family:"grok",attachment:true,reasoning:false,tool_call:false,temperature:false,release_date:"2026-05-30",last_updated:"2026-05-30",modalities:{input:["text","image","video"],output:["video"]},open_weights:false,limit:{context:1024,output:0}},"xai/grok-4.5":{id:"xai/grok-4.5",name:"Grok 4.5",description:"xAI's Grok model for chat, coding, agentic tools, and lower hallucination risk",family:"grok",attachment:true,reasoning:true,tool_call:true,structured_output:true,temperature:true,release_date:"2026-07-08",last_updated:"2026-07-08",modalities:{input:["text","image"],output:["text"]},open_weights:false,limit:{context:5e5,output:5e5},benchmarks:[{name:"SWE-Bench Pro",score:64.7,metric:"resolve rate",source:"https://x.ai/news/grok-4-5",date:"2026-07-08"},{name:"SWE-Bench Multilingual",score:78,metric:"resolve rate",source:"https://x.ai/news/grok-4-5",date:"2026-07-08"},{name:"Terminal-Bench",score:83.3,metric:"success rate",version:"2.1",source:"https://x.ai/news/grok-4-5",date:"2026-07-08"},{name:"DeepSWE",score:62,metric:"resolve rate",version:"1.0",source:"https://x.ai/news/grok-4-5",date:"2026-07-08"},{name:"DeepSWE",score:53,metric:"resolve rate",harness:"mini-swe-agent",version:"1.1",source:"https://x.ai/news/grok-4-5",date:"2026-07-08"},{name:"SWE Marathon",score:29,metric:"pass@1",source:"https://x.ai/news/grok-4-5",date:"2026-07-08"}]},"xai/grok-voice-tts-1.0":{id:"xai/grok-voice-tts-1.0",name:"Grok Voice TTS 1.0",description:"Convert text into spoken audio with a single API call. The API supports a rich set of expressive voices, inline speech tags for fine-grained delivery control, and output formats from high-fidelity MP3 to telephony-optimized \u03BC-law.",attachment:false,reasoning:false,tool_call:false,temperature:false,release_date:"2026-07-31",last_updated:"2026-07-31",modalities:{input:["text"],output:["audio"]},open_weights:false,limit:{context:15e3,output:15e3}},"xai/grok-imagine-image-2.0":{id:"xai/grok-imagine-image-2.0",name:"Grok Imagine Image 2.0",description:"Image model for prompt-driven generation, editing, and visual design workflows",family:"grok",attachment:true,reasoning:false,tool_call:false,temperature:false,release_date:"2026-08-07",last_updated:"2026-08-07",modalities:{input:["text","image"],output:["image"]},open_weights:false,limit:{context:8e3,output:0}},"xai/grok-voice-stt-1.0":{id:"xai/grok-voice-stt-1.0",name:"Grok Voice STT 1.0",description:"Grok Voice STT 1.0 is xAI's speech-to-text model. It supports transcription with word-level timestamps, optional speaker diarization, and multichannel audio.",attachment:true,reasoning:false,tool_call:false,temperature:false,release_date:"2026-08-04",last_updated:"2026-08-04",modalities:{input:["audio"],output:["text"]},open_weights:false,limit:{context:15e3,output:15e3}},"xai/grok-4.20-0309-non-reasoning":{id:"xai/grok-4.20-0309-non-reasoning",name:"Grok 4.20 (Non-Reasoning)",description:"Grok model for agentic tool use, reasoning, coding, and live assistance",family:"grok",attachment:true,reasoning:false,tool_call:true,structured_output:true,temperature:true,release_date:"2026-03-09",last_updated:"2026-03-09",modalities:{input:["text","image","pdf"],output:["text"]},open_weights:false,limit:{context:1e6,output:3e4}},"xai/grok-imagine-image-quality":{id:"xai/grok-imagine-image-quality",name:"Grok Imagine Image Quality",description:"Higher-fidelity Grok Imagine image model for prompt-driven generation, editing, and visual design workflows",family:"grok",attachment:true,reasoning:false,tool_call:false,temperature:false,release_date:"2026-04-03",last_updated:"2026-04-03",modalities:{input:["text","image"],output:["image"]},open_weights:false,limit:{context:16e3,output:0}},"xai/grok-build-0.1":{id:"xai/grok-build-0.1",name:"Grok Build 0.1",description:"Fast Grok coding model tuned for agentic engineering and iterative edits",family:"grok-build",attachment:true,reasoning:true,tool_call:true,structured_output:true,temperature:true,release_date:"2026-04-16",last_updated:"2026-04-16",modalities:{input:["text","image","pdf"],output:["text"]},open_weights:false,limit:{context:256e3,output:256e3}},"xai/grok-4.1-fast":{id:"xai/grok-4.1-fast",name:"Grok 4.1 Fast",description:"xAI's fast agentic tool-calling model with a 2M context window; non-reasoning variant for low-latency responses",family:"grok",attachment:true,reasoning:false,tool_call:true,structured_output:true,temperature:true,release_date:"2025-11-19",last_updated:"2025-11-19",modalities:{input:["text","image"],output:["text"]},open_weights:false,limit:{context:2e6,output:3e4}},"xai/grok-4.6":{id:"xai/grok-4.6",name:"Grok 4.6",description:"xAI's frontier model for long-running agents, coding, knowledge work, and visual projects",family:"grok",attachment:true,reasoning:true,tool_call:true,structured_output:true,temperature:true,knowledge:"2026-02-01",release_date:"2026-08-12",last_updated:"2026-08-12",modalities:{input:["text","image"],output:["text"]},open_weights:false,limit:{context:5e5,output:5e5},benchmarks:[{name:"CursorBench",score:40.4,metric:"score",variant:"high effort",version:"4.0",source:"https://x.ai/news/grok-4-7",date:"2026-09-21"},{name:"DeepSWE",score:65.2,metric:"score",variant:"high effort",version:"1.1",source:"https://x.ai/news/grok-4-7",date:"2026-09-21"},{name:"EEBench",score:53,metric:"score",variant:"high effort",source:"https://x.ai/news/grok-4-7",date:"2026-09-21"},{name:"AA-Briefcase",score:1546,metric:"Elo",variant:"high effort",version:"1.1",source:"https://x.ai/news/grok-4-7",date:"2026-09-21"},{name:"Terminal-Bench",score:20.3,metric:"score",variant:"high effort",version:"4.0",source:"https://x.ai/news/grok-4-7",date:"2026-09-21"},{name:"Harvey Legal Agent Benchmark",score:15.8,metric:"score",variant:"high effort",source:"https://x.ai/news/grok-4-7",date:"2026-09-21"},{name:"HealthBench",score:48.5,metric:"score",variant:"high effort; professional",source:"https://x.ai/news/grok-4-7",date:"2026-09-21"},{name:"GDPval",score:1605,metric:"Elo",variant:"high effort",source:"https://x.ai/news/grok-4-7",date:"2026-09-21"}]},"ibm/granite-4-h-micro":{id:"ibm/granite-4-h-micro",name:"Granite-4.0-H-Micro",description:"Compact open-weight hybrid Granite model for lightweight enterprise chat and tool calling",family:"granite",attachment:false,reasoning:false,tool_call:true,structured_output:true,temperature:true,release_date:"2025-10-02",last_updated:"2025-10-02",modalities:{input:["text"],output:["text"]},open_weights:true,limit:{context:131072,output:131072},weights:[{label:"Hugging Face",url:"https://huggingface.co/ibm-granite/granite-4.0-h-micro"}]},"ibm/granite-4-h-small":{id:"ibm/granite-4-h-small",name:"Granite-4.0-H-Small",description:"Open-weight hybrid model for enterprise chat, coding, retrieval-augmented generation, and tool-calling workloads",family:"granite",attachment:false,reasoning:false,tool_call:true,structured_output:true,temperature:true,release_date:"2025-10-02",last_updated:"2025-10-02",modalities:{input:["text"],output:["text"]},open_weights:true,limit:{context:131072,output:131072},weights:[{label:"Hugging Face",url:"https://huggingface.co/ibm-granite/granite-4.0-h-small"}]},"deepreinforce/ornith-1.0-397b":{id:"deepreinforce/ornith-1.0-397b",name:"Ornith 1.0 397B",description:"Large coding-reasoning model for agentic software tasks and RL search",family:"ornith",attachment:true,reasoning:true,tool_call:true,temperature:true,release_date:"2026-06-25",last_updated:"2026-06-25",modalities:{input:["text","image"],output:["text"]},open_weights:true,limit:{context:262144},license:"MIT",links:[{label:"Model card",url:"https://huggingface.co/deepreinforce-ai/Ornith-1.0-397B",type:"model_card"},{label:"Announcement",url:"https://deep-reinforce.com/ornith_1_0.html",type:"announcement"}],weights:[{label:"Hugging Face",url:"https://huggingface.co/deepreinforce-ai/Ornith-1.0-397B"},{label:"Hugging Face (FP8)",url:"https://huggingface.co/deepreinforce-ai/Ornith-1.0-397B-FP8",quantization:"fp8"}],benchmarks:[{name:"SWE-Bench Verified",score:82.4,metric:"percent resolved",source:"https://huggingface.co/deepreinforce-ai/Ornith-1.0-397B"},{name:"SWE-Bench Pro",score:62.2,metric:"percent resolved",source:"https://huggingface.co/deepreinforce-ai/Ornith-1.0-397B"},{name:"SWE-Bench Multilingual",score:78.9,metric:"percent resolved",source:"https://huggingface.co/deepreinforce-ai/Ornith-1.0-397B"},{name:"Terminal-Bench 2.1",score:77.5,metric:"percent",variant:"Terminus-2",source:"https://huggingface.co/deepreinforce-ai/Ornith-1.0-397B"},{name:"Terminal-Bench 2.1",score:78.2,metric:"percent",variant:"Claude Code",source:"https://huggingface.co/deepreinforce-ai/Ornith-1.0-397B"},{name:"NL2Repo",score:48.2,metric:"percent",source:"https://huggingface.co/deepreinforce-ai/Ornith-1.0-397B"},{name:"Claw-eval",score:77.1,metric:"percent",source:"https://huggingface.co/deepreinforce-ai/Ornith-1.0-397B"}]},"deepreinforce/ornith-1.5-35b-a3b":{id:"deepreinforce/ornith-1.5-35b-a3b",name:"Ornith 1.5 35B A3B",description:"Mixture-of-experts coding-reasoning model for agentic software tasks, tool use, and image understanding",family:"ornith",attachment:true,reasoning:true,tool_call:true,structured_output:true,temperature:true,release_date:"2026-08-18",last_updated:"2026-08-23",modalities:{input:["text","image"],output:["text"]},open_weights:true,limit:{context:262144},license:"MIT",links:[{label:"Model card",url:"https://huggingface.co/ornith-ai/Ornith-1.5-35B-A3B",type:"model_card"}],weights:[{label:"Hugging Face",url:"https://huggingface.co/ornith-ai/Ornith-1.5-35B-A3B"}]},"deepreinforce/ornith-1.0-35b":{id:"deepreinforce/ornith-1.0-35b",name:"Ornith 1.0 35B",description:"Large coding-reasoning model for agentic software tasks and RL search",family:"ornith",attachment:true,reasoning:true,tool_call:true,temperature:true,release_date:"2026-06-25",last_updated:"2026-06-25",modalities:{input:["text","image"],output:["text"]},open_weights:true,limit:{context:262144},license:"MIT",links:[{label:"Model card",url:"https://huggingface.co/deepreinforce-ai/Ornith-1.0-35B",type:"model_card"},{label:"Announcement",url:"https://deep-reinforce.com/ornith_1_0.html",type:"announcement"}],weights:[{label:"Hugging Face",url:"https://huggingface.co/deepreinforce-ai/Ornith-1.0-35B"}],benchmarks:[{name:"SWE-Bench Verified",score:75.6,metric:"percent resolved",source:"https://huggingface.co/deepreinforce-ai/Ornith-1.0-35B"},{name:"SWE-Bench Pro",score:50.4,metric:"percent resolved",source:"https://huggingface.co/deepreinforce-ai/Ornith-1.0-35B"},{name:"SWE-Bench Multilingual",score:69.3,metric:"percent resolved",source:"https://huggingface.co/deepreinforce-ai/Ornith-1.0-35B"},{name:"Terminal-Bench 2.1",score:64.2,metric:"percent",variant:"Terminus-2",source:"https://huggingface.co/deepreinforce-ai/Ornith-1.0-35B"},{name:"Terminal-Bench 2.1",score:62.8,metric:"percent",variant:"Claude Code",source:"https://huggingface.co/deepreinforce-ai/Ornith-1.0-35B"},{name:"NL2Repo",score:34.6,metric:"percent",source:"https://huggingface.co/deepreinforce-ai/Ornith-1.0-35B"},{name:"Claw-eval",score:69.8,metric:"percent",source:"https://huggingface.co/deepreinforce-ai/Ornith-1.0-35B"}]},"deepreinforce/ornith-1.0-31b":{id:"deepreinforce/ornith-1.0-31b",name:"Ornith 1.0 31B",description:"Open coding-reasoning model for repository tasks and self-improving agents",family:"ornith",attachment:true,reasoning:true,tool_call:true,temperature:true,release_date:"2026-06-25",last_updated:"2026-06-25",modalities:{input:["text","image"],output:["text"]},open_weights:true,limit:{context:262144},license:"MIT",links:[{label:"Announcement",url:"https://deep-reinforce.com/ornith_1_0.html",type:"announcement"}]},"deepreinforce/ornith-1.0-9b":{id:"deepreinforce/ornith-1.0-9b",name:"Ornith 1.0 9B",description:"Open coding-reasoning model for repository tasks and self-improving agents",family:"ornith",attachment:true,reasoning:true,tool_call:true,temperature:true,release_date:"2026-06-25",last_updated:"2026-06-25",modalities:{input:["text","image"],output:["text"]},open_weights:true,limit:{context:262144},license:"MIT",links:[{label:"Model card",url:"https://huggingface.co/deepreinforce-ai/Ornith-1.0-9B",type:"model_card"},{label:"Announcement",url:"https://deep-reinforce.com/ornith_1_0.html",type:"announcement"}],weights:[{label:"Hugging Face",url:"https://huggingface.co/deepreinforce-ai/Ornith-1.0-9B"}],benchmarks:[{name:"SWE-Bench Verified",score:69.4,metric:"percent resolved",source:"https://huggingface.co/deepreinforce-ai/Ornith-1.0-9B"},{name:"SWE-Bench Pro",score:42.9,metric:"percent resolved",source:"https://huggingface.co/deepreinforce-ai/Ornith-1.0-9B"},{name:"SWE-Bench Multilingual",score:52,metric:"percent resolved",source:"https://huggingface.co/deepreinforce-ai/Ornith-1.0-9B"},{name:"Terminal-Bench 2.1",score:43.1,metric:"percent",variant:"Terminus-2",source:"https://huggingface.co/deepreinforce-ai/Ornith-1.0-9B"},{name:"Terminal-Bench 2.1",score:40.6,metric:"percent",variant:"Claude Code",source:"https://huggingface.co/deepreinforce-ai/Ornith-1.0-9B"},{name:"NL2Repo",score:27.2,metric:"percent",source:"https://huggingface.co/deepreinforce-ai/Ornith-1.0-9B"},{name:"Claw-eval",score:63.1,metric:"percent",source:"https://huggingface.co/deepreinforce-ai/Ornith-1.0-9B"}]},"sakana/fugu-ultra":{id:"sakana/fugu-ultra",name:"Fugu Ultra",description:"Quality-first multi-agent model for hard research, analysis, and competitions",family:"fugu",attachment:true,reasoning:true,tool_call:true,structured_output:true,temperature:false,release_date:"2026-06-15",last_updated:"2026-06-15",modalities:{input:["text","image"],output:["text"]},open_weights:false,limit:{context:1e6},links:[{label:"Official model catalog",url:"https://raw.githubusercontent.com/SakanaAI/fugu/refs/heads/main/configs/files/fugu.json",type:"docs"}],benchmarks:[{name:"SWE Bench Pro",score:73.7,source:"https://console.sakana.ai/models"},{name:"Terminal Bench 2.1",score:82.1,source:"https://console.sakana.ai/models"},{name:"LiveCodeBench",score:93.2,source:"https://console.sakana.ai/models"},{name:"LiveCodeBench Pro",score:90.8,source:"https://console.sakana.ai/models"},{name:"Humanity\u2019s Last Exam",score:50,source:"https://console.sakana.ai/models"},{name:"CharXiv Reasoning",score:86.6,source:"https://console.sakana.ai/models"},{name:"GPQA Diamond",score:95.5,source:"https://console.sakana.ai/models"},{name:"SciCode",score:58.7,source:"https://console.sakana.ai/models"},{name:"\u03C43 Banking",score:20.6,source:"https://console.sakana.ai/models"},{name:"Long Context Reasoning",score:73.3,source:"https://console.sakana.ai/models"},{name:"MRCRv2",score:93.6,source:"https://console.sakana.ai/models"},{name:"CTI-REALM",score:69.4,source:"https://console.sakana.ai/models"}]},"sakana/sakana-namazu":{id:"sakana/sakana-namazu",name:"Sakana Namazu",description:"Japanese-specialized reasoning model based on Kimi K2.6 and tuned for Japanese language, culture, and business workflows",family:"sakana-namazu",attachment:true,reasoning:true,tool_call:true,structured_output:true,temperature:true,release_date:"2026-08-03",last_updated:"2026-08-03",modalities:{input:["text","image","pdf"],output:["text"]},open_weights:false,limit:{context:262144,output:65536},links:[{label:"Official product page",url:"https://sakana.ai/namazu/",type:"announcement"},{label:"Official model documentation",url:"https://console.sakana.ai/models?model=sakana-namazu",type:"docs"}],benchmarks:[{name:"AIME26",score:96.67,source:"https://console.sakana.ai/models?model=sakana-namazu"},{name:"MMLU-Pro",score:90.33,source:"https://console.sakana.ai/models?model=sakana-namazu"},{name:"LiveCodeBench v6",score:90.33,source:"https://console.sakana.ai/models?model=sakana-namazu"},{name:"JFBench",score:37.4,source:"https://console.sakana.ai/models?model=sakana-namazu"},{name:"Translation",score:52.2,source:"https://console.sakana.ai/models?model=sakana-namazu"},{name:"FairPoliticsQA",score:56.3,source:"https://console.sakana.ai/models?model=sakana-namazu"}]},"sakana/fugu":{id:"sakana/fugu",name:"Fugu",description:"Multi-agent model for routing expert agents across complex analytical tasks",family:"fugu",attachment:true,reasoning:true,tool_call:true,structured_output:true,temperature:false,release_date:"2026-06-15",last_updated:"2026-06-15",modalities:{input:["text","image"],output:["text"]},open_weights:false,limit:{context:1e6},links:[{label:"Official model catalog",url:"https://raw.githubusercontent.com/SakanaAI/fugu/refs/heads/main/configs/files/fugu.json",type:"docs"}],benchmarks:[{name:"SWE Bench Pro",score:59,source:"https://console.sakana.ai/models"},{name:"Terminal Bench 2.1",score:80.2,source:"https://console.sakana.ai/models"},{name:"LiveCodeBench",score:92.9,source:"https://console.sakana.ai/models"},{name:"LiveCodeBench Pro",score:87.8,source:"https://console.sakana.ai/models"},{name:"Humanity\u2019s Last Exam",score:47.2,source:"https://console.sakana.ai/models"},{name:"CharXiv Reasoning",score:85.1,source:"https://console.sakana.ai/models"},{name:"GPQA Diamond",score:95.5,source:"https://console.sakana.ai/models"},{name:"SciCode",score:60.1,source:"https://console.sakana.ai/models"},{name:"\u03C43 Banking",score:21.7,source:"https://console.sakana.ai/models"},{name:"Long Context Reasoning",score:74.7,source:"https://console.sakana.ai/models"},{name:"MRCRv2",score:86.6,source:"https://console.sakana.ai/models"},{name:"CTI-REALM",score:67.5,source:"https://console.sakana.ai/models"}]},"inclusionai/ling-3.0-flash-fin":{id:"inclusionai/ling-3.0-flash-fin",name:"Ling 3.0 Flash Fin",description:"Finance-enhanced model for financial research, multi-step investment workflows, and long-horizon planning and execution",family:"ling",attachment:false,reasoning:true,tool_call:true,release_date:"2026-08-27",last_updated:"2026-08-27",modalities:{input:["text"],output:["text"]},open_weights:false,limit:{context:262144,output:32768},benchmarks:[{name:"FinFIRST",score:52.85,metric:"score",harness:"ReAct with web search, visit, and Python",variant:"highest reasoning effort",source:"https://huggingface.co/inclusionAI/Ling-3.0-flash-Fin"},{name:"FinSearchComp Verified",score:77.04,metric:"score",harness:"ReAct with web search, visit, and Python",variant:"highest reasoning effort",dataset:"expert-validated internal set",source:"https://huggingface.co/inclusionAI/Ling-3.0-flash-Fin"},{name:"FinCRAFT",score:51.74,metric:"score",variant:"highest reasoning effort",dataset:"internal",source:"https://huggingface.co/inclusionAI/Ling-3.0-flash-Fin"},{name:"Finance Agent",score:69.19,metric:"strict-pass",variant:"highest reasoning effort; 10 runs",version:"1.1",source:"https://huggingface.co/inclusionAI/Ling-3.0-flash-Fin"},{name:"Finance Agent",score:59.81,metric:"strict-pass",variant:"highest reasoning effort; 20 runs",version:"2",source:"https://huggingface.co/inclusionAI/Ling-3.0-flash-Fin"},{name:"APEX-Agents",score:29.17,metric:"score",variant:"highest reasoning effort",source:"https://huggingface.co/inclusionAI/Ling-3.0-flash-Fin"},{name:"SpreadsheetBench",score:86.5,metric:"score",harness:"Claude Code 2.1.173",variant:"highest reasoning effort; temperature=0.6; 120 turns; 3h timeout",version:"1",source:"https://huggingface.co/inclusionAI/Ling-3.0-flash-Fin"},{name:"SpreadsheetBench",score:21.81,metric:"score",harness:"Claude Code 2.1.173",variant:"highest reasoning effort; temperature=0.6; 300 turns; 3h timeout",version:"2",source:"https://huggingface.co/inclusionAI/Ling-3.0-flash-Fin"},{name:"tau3-bench",score:41,metric:"score",variant:"highest reasoning effort; banking",source:"https://huggingface.co/inclusionAI/Ling-3.0-flash-Fin"}]},"moonshotai/kimi-k3":{id:"moonshotai/kimi-k3",name:"Kimi K3",description:"Multimodal Kimi model with 1M context and toggleable max-effort thinking for long-horizon agent work",family:"kimi-k3",attachment:true,reasoning:true,tool_call:true,structured_output:true,temperature:false,release_date:"2026-07-16",last_updated:"2026-07-16",modalities:{input:["text","image","video"],output:["text"]},open_weights:true,limit:{context:1048576,output:131072},benchmarks:[{name:"DeepSWE",score:67.5,metric:"resolve rate",harness:"Kimi Code",variant:"max effort",version:"1.1",source:"https://www.kimi.com/blog/kimi-k3",date:"2026-07-16"},{name:"Terminal-Bench",score:88.3,metric:"accuracy",harness:"Kimi Code",variant:"max effort",version:"2.1",source:"https://www.kimi.com/blog/kimi-k3",date:"2026-07-16"},{name:"FrontierSWE",score:81.2,metric:"dominance score",harness:"Kimi Code",variant:"max effort",source:"https://www.kimi.com/blog/kimi-k3",date:"2026-07-16"},{name:"Program Bench",score:77.8,metric:"score",harness:"Kimi Code",variant:"max effort",source:"https://www.kimi.com/blog/kimi-k3",date:"2026-07-16"},{name:"SWE Marathon",score:42,metric:"resolve rate",harness:"Claude Code",variant:"max effort",version:"1.1",source:"https://www.kimi.com/blog/kimi-k3",date:"2026-07-16"},{name:"GDPval-AA",score:1668,metric:"Elo",variant:"max effort",version:"v2",source:"https://www.kimi.com/blog/kimi-k3",date:"2026-07-16"},{name:"AA-Briefcase",score:1548,metric:"Elo",variant:"max effort",source:"https://www.kimi.com/blog/kimi-k3",date:"2026-07-16"},{name:"AutomationBench",score:30.8,metric:"success rate",variant:"max effort",dataset:"600-task public subset",source:"https://www.kimi.com/blog/kimi-k3",date:"2026-07-16"},{name:"JobBench",score:52.9,metric:"score",variant:"max effort",source:"https://www.kimi.com/blog/kimi-k3",date:"2026-07-16"},{name:"SpreadsheetBench",score:34.8,metric:"score",harness:"Claude Code",variant:"max effort",version:"2",source:"https://www.kimi.com/blog/kimi-k3",date:"2026-07-16"},{name:"BrowseComp",score:91.2,metric:"accuracy",variant:"max effort, context compaction",source:"https://www.kimi.com/blog/kimi-k3",date:"2026-07-16"},{name:"CharXiv Reasoning",score:91.3,metric:"accuracy",variant:"max effort, with tools",source:"https://www.kimi.com/blog/kimi-k3",date:"2026-07-16"},{name:"ZeroBench",score:41,metric:"pass@5",variant:"max effort, with tools",source:"https://www.kimi.com/blog/kimi-k3",date:"2026-07-16"}]},"moonshotai/kimi-k2.7-code-highspeed":{id:"moonshotai/kimi-k2.7-code-highspeed",name:"Kimi K2.7 Code Highspeed",description:"Lower-latency Kimi Code variant for interactive edits and coding-agent loops",family:"kimi-k2",attachment:true,reasoning:true,tool_call:true,structured_output:true,temperature:false,knowledge:"2025-01",release_date:"2026-06-12",last_updated:"2026-06-12",modalities:{input:["text","image","video"],output:["text"]},open_weights:true,limit:{context:262144,output:262144},weights:[{label:"Hugging Face",url:"https://huggingface.co/moonshotai/Kimi-K2.7-Code"}]},"moonshotai/kimi-k2.6":{id:"moonshotai/kimi-k2.6",name:"Kimi K2.6",description:"Multimodal Kimi workhorse for agent loops, coding tasks, and visual context",family:"kimi-k2",attachment:true,reasoning:true,tool_call:true,structured_output:true,temperature:true,knowledge:"2025-01",release_date:"2026-04-21",last_updated:"2026-04-21",modalities:{input:["text","image","video"],output:["text"]},open_weights:true,limit:{context:262144,output:262144},weights:[{label:"Hugging Face",url:"https://huggingface.co/moonshotai/Kimi-K2.6"}],benchmarks:[{name:"SWE-Bench Verified",score:80.2,metric:"resolved",source:"https://huggingface.co/moonshotai/Kimi-K2.6"},{name:"Artificial Analysis Coding Agent Index",score:50.5,metric:"average pass@1",harness:"Claude Code",source:"https://artificialanalysis.ai/agents/coding-agents"},{name:"SWE-Atlas Codebase QnA",score:59.8,metric:"pass@1",harness:"Claude Code",source:"https://artificialanalysis.ai/agents/coding-agents"},{name:"SWE-Bench Pro",score:27.3,metric:"pass@1",harness:"Claude Code",dataset:"hard-aa",source:"https://artificialanalysis.ai/agents/coding-agents"},{name:"Terminal-Bench",score:64.3,metric:"pass@1",harness:"Claude Code",version:"2.1",source:"https://artificialanalysis.ai/agents/coding-agents"}]},"moonshotai/kimi-k2-thinking":{id:"moonshotai/kimi-k2-thinking",name:"Kimi K2 Thinking",description:"Thinking Kimi model for slower research passes, planning, and hard technical questions",family:"kimi-thinking",attachment:false,reasoning:true,tool_call:true,temperature:true,knowledge:"2024-08",release_date:"2025-11-06",last_updated:"2025-11-06",modalities:{input:["text"],output:["text"]},open_weights:true,limit:{context:262144,output:262144},weights:[{label:"Hugging Face",url:"https://huggingface.co/moonshotai/Kimi-K2-Thinking"}],benchmarks:[{name:"SWE-Bench Verified",score:71.3,metric:"resolved",source:"https://huggingface.co/moonshotai/Kimi-K2-Thinking"}]},"moonshotai/kimi-k2.5":{id:"moonshotai/kimi-k2.5",name:"Kimi K2.5",description:"Earlier Kimi frontier model for long-context agents, coding, and multimodal work",family:"kimi-k2",attachment:true,reasoning:true,tool_call:true,structured_output:true,temperature:false,knowledge:"2025-01",release_date:"2026-01",last_updated:"2026-01",modalities:{input:["text","image","video"],output:["text"]},open_weights:true,limit:{context:262144,output:262144},weights:[{label:"Hugging Face",url:"https://huggingface.co/moonshotai/Kimi-K2.5"}],benchmarks:[{name:"SWE-Bench Verified",score:70.8,metric:"resolved",source:"https://www.swebench.com/"},{name:"SWE-Atlas Codebase QnA",score:13.1,metric:"score",harness:"Mini-SWE-Agent",source:"https://labs.scale.com/leaderboard/sweatlas-qna"},{name:"SWE-Atlas Refactoring",score:20.95,metric:"score",harness:"Mini-SWE-Agent",source:"https://labs.scale.com/leaderboard/sweatlas-refactoring"},{name:"SWE-Atlas Test Writing",score:25.77,metric:"score",harness:"Mini-SWE-Agent",source:"https://labs.scale.com/leaderboard/sweatlas-tw"}]},"moonshotai/kimi-k2-thinking-turbo":{id:"moonshotai/kimi-k2-thinking-turbo",name:"Kimi K2 Thinking Turbo",description:"Kimi reasoning model for long-horizon research, planning, and tool use",family:"kimi-thinking",attachment:false,reasoning:true,tool_call:true,temperature:true,knowledge:"2024-08",release_date:"2025-11-06",last_updated:"2025-11-06",modalities:{input:["text"],output:["text"]},open_weights:true,limit:{context:262144,output:262144},weights:[{label:"Hugging Face",url:"https://huggingface.co/moonshotai/Kimi-K2-Thinking"}]},"moonshotai/kimi-k2.8-preview":{id:"moonshotai/kimi-k2.8-preview",name:"Kimi K2.8 Preview",description:"Kimi coding model with more efficient thinking and up to 1M context, available through Kimi Code",family:"kimi-k2",attachment:true,reasoning:true,tool_call:true,release_date:"2026-09-11",last_updated:"2026-09-11",modalities:{input:["text","image","video"],output:["text"]},open_weights:false,limit:{context:1048576}},"moonshotai/kimi-k2.7-code":{id:"moonshotai/kimi-k2.7-code",name:"Kimi K2.7 Code",description:"Coding-focused Kimi model, stronger on long-horizon repo work with less overthinking",family:"kimi-k2",attachment:true,reasoning:true,tool_call:true,structured_output:true,temperature:false,knowledge:"2025-01",release_date:"2026-06-12",last_updated:"2026-06-12",modalities:{input:["text","image","video"],output:["text"]},open_weights:true,limit:{context:262144,output:262144},weights:[{label:"Hugging Face",url:"https://huggingface.co/moonshotai/Kimi-K2.7-Code"}],benchmarks:[{name:"Kimi Code Bench",score:62,harness:"Kimi Code CLI",version:"v2",source:"https://huggingface.co/moonshotai/Kimi-K2.7-Code",date:"2026-06-12"},{name:"Program Bench",score:53.6,harness:"Kimi Code CLI",source:"https://huggingface.co/moonshotai/Kimi-K2.7-Code",date:"2026-06-12"},{name:"MLS Bench Lite",score:35.1,harness:"Kimi Code CLI",source:"https://huggingface.co/moonshotai/Kimi-K2.7-Code",date:"2026-06-12"},{name:"MCP Atlas",score:76,metric:"success rate",harness:"Kimi Code CLI",source:"https://huggingface.co/moonshotai/Kimi-K2.7-Code",date:"2026-06-12"},{name:"MCP Mark Verified",score:81.1,metric:"success rate",harness:"Kimi Code CLI",source:"https://huggingface.co/moonshotai/Kimi-K2.7-Code",date:"2026-06-12"},{name:"Kimi Claw 24/7 Bench",score:46.9,harness:"Kimi Code CLI",source:"https://huggingface.co/moonshotai/Kimi-K2.7-Code",date:"2026-06-12"}]},"nvidia/nemotron-3-nano-30b-a3b":{id:"nvidia/nemotron-3-nano-30b-a3b",name:"Nemotron 3 Nano 30B A3B",description:"Small Nemotron 3 MoE for efficient coding, math, and long-context agents",family:"nemotron",attachment:false,reasoning:true,tool_call:true,temperature:true,release_date:"2025-12-15",last_updated:"2025-12-15",modalities:{input:["text"],output:["text"]},open_weights:true,limit:{context:262144,output:262144}},"nvidia/llama-nemotron-embed-vl-1b-v2":{id:"nvidia/llama-nemotron-embed-vl-1b-v2",name:"Llama Nemotron Embed VL 1B v2",description:"Embedding model for semantic search, retrieval, clustering, and ranking pipelines",family:"nemotron",attachment:true,reasoning:false,tool_call:false,temperature:false,release_date:"2026-02-10",last_updated:"2026-02-10",modalities:{input:["text","image"],output:["text"]},open_weights:true,limit:{context:32768,output:2048}},"nvidia/nemotron-3.5-lightning":{id:"nvidia/nemotron-3.5-lightning",name:"Nemotron 3.5 Lightning 30B A3B",description:"Fast NVIDIA Nemotron MoE for reliable agentic tasks across enterprise workloads",family:"nemotron",attachment:false,reasoning:true,tool_call:true,structured_output:true,temperature:true,release_date:"2026-08-11",last_updated:"2026-08-11",modalities:{input:["text"],output:["text"]},open_weights:true,limit:{context:262144,output:262144},benchmarks:[{name:"MMLU-Pro",score:81.94,metric:"score",harness:"NeMo Gym / NeMo Evaluator SDK",variant:"BF16; reasoning",source:"https://huggingface.co/nvidia/NVIDIA-Nemotron-3.5-Lightning-30B-A3B-BF16"},{name:"AA-Omniscience",score:17.5,metric:"score",harness:"NeMo Gym / NeMo Evaluator SDK",variant:"BF16; reasoning",source:"https://huggingface.co/nvidia/NVIDIA-Nemotron-3.5-Lightning-30B-A3B-BF16"},{name:"SciCode",score:32.6,metric:"score",harness:"NeMo Gym / NeMo Evaluator SDK",variant:"BF16; reasoning",source:"https://huggingface.co/nvidia/NVIDIA-Nemotron-3.5-Lightning-30B-A3B-BF16"},{name:"PinchBench",score:85.37,metric:"score",harness:"NeMo Gym / NeMo Evaluator SDK",variant:"BF16; reasoning",source:"https://huggingface.co/nvidia/NVIDIA-Nemotron-3.5-Lightning-30B-A3B-BF16"},{name:"BrowseComp",score:36.97,metric:"score",harness:"NeMo Gym / NeMo Evaluator SDK",variant:"BF16; reasoning",source:"https://huggingface.co/nvidia/NVIDIA-Nemotron-3.5-Lightning-30B-A3B-BF16"},{name:"AA-LCR",score:52,metric:"score",harness:"NeMo Gym / NeMo Evaluator SDK",variant:"BF16; reasoning",source:"https://huggingface.co/nvidia/NVIDIA-Nemotron-3.5-Lightning-30B-A3B-BF16"},{name:"GPQA Diamond",score:75.44,metric:"accuracy",variant:"BF16; reasoning; no tools",source:"https://huggingface.co/nvidia/NVIDIA-Nemotron-3.5-Lightning-30B-A3B-BF16"},{name:"Humanity's Last Exam",score:11.72,metric:"accuracy",variant:"BF16; reasoning; no tools",dataset:"text-only",source:"https://huggingface.co/nvidia/NVIDIA-Nemotron-3.5-Lightning-30B-A3B-BF16"},{name:"SWE-Bench Verified",score:51.56,metric:"accuracy",harness:"NeMo Evaluator",variant:"BF16; reasoning",source:"https://huggingface.co/nvidia/NVIDIA-Nemotron-3.5-Lightning-30B-A3B-BF16"},{name:"SWE-Bench Multilingual",score:39.33,metric:"accuracy",harness:"NeMo Evaluator",variant:"BF16; reasoning",source:"https://huggingface.co/nvidia/NVIDIA-Nemotron-3.5-Lightning-30B-A3B-BF16"},{name:"Terminal-Bench",score:24.58,metric:"accuracy",harness:"NeMo Evaluator",variant:"BF16; reasoning",version:"2.1",source:"https://huggingface.co/nvidia/NVIDIA-Nemotron-3.5-Lightning-30B-A3B-BF16"},{name:"tau3-bench",score:9.28,metric:"score",variant:"BF16; reasoning; banking",source:"https://huggingface.co/nvidia/NVIDIA-Nemotron-3.5-Lightning-30B-A3B-BF16"},{name:"GDPval-AA",score:832,metric:"Elo",variant:"BF16; reasoning",version:"2",source:"https://huggingface.co/nvidia/NVIDIA-Nemotron-3.5-Lightning-30B-A3B-BF16"},{name:"IFBench",score:71.88,metric:"accuracy",variant:"BF16; reasoning; loose",source:"https://huggingface.co/nvidia/NVIDIA-Nemotron-3.5-Lightning-30B-A3B-BF16"}]},"nvidia/nemotron-voicechat":{id:"nvidia/nemotron-voicechat",name:"Nemotron VoiceChat",description:"Nemotron multimodal model for visual reasoning and agentic AI workflows",family:"nemotron",attachment:true,reasoning:false,tool_call:true,temperature:true,release_date:"2026-03-16",last_updated:"2026-03-16",modalities:{input:["text","audio"],output:["text"]},open_weights:true,limit:{context:128e3,output:8192}},"nvidia/nemotron-nano-9b-v2":{id:"nvidia/nemotron-nano-9b-v2",name:"Nemotron Nano 9B v2",description:"Compact Nemotron model for efficient reasoning and deployable AI agents",family:"nemotron",attachment:false,reasoning:true,tool_call:true,temperature:true,release_date:"2025-08-18",last_updated:"2025-08-18",modalities:{input:["text"],output:["text"]},open_weights:true,limit:{context:131072,output:131072}},"nvidia/mistral-nemotron":{id:"nvidia/mistral-nemotron",name:"Mistral Nemotron",description:"Mistral model for multilingual chat, reasoning, and tool-assisted workflows",family:"nemotron",attachment:false,reasoning:false,tool_call:true,temperature:true,release_date:"2025-06-11",last_updated:"2025-06-12",modalities:{input:["text"],output:["text"]},open_weights:true,limit:{context:128e3,output:8192}},"nvidia/nemotron-3-super-120b-a12b":{id:"nvidia/nemotron-3-super-120b-a12b",name:"Nemotron 3 Super 120B A12B",description:"Nemotron middle tier for collaborative agents and high-volume reasoning workloads",family:"nemotron",attachment:false,reasoning:true,tool_call:true,temperature:true,release_date:"2026-03-11",last_updated:"2026-03-11",modalities:{input:["text"],output:["text"]},open_weights:true,limit:{context:262144,output:262144}},"nvidia/nemotron-content-safety-reasoning-4b":{id:"nvidia/nemotron-content-safety-reasoning-4b",name:"Nemotron Content Safety Reasoning 4B",description:"Safety model for policy screening, moderation, and risk-aware routing workflows",family:"nemotron",attachment:false,reasoning:true,tool_call:false,temperature:false,release_date:"2026-01-22",last_updated:"2026-01-22",modalities:{input:["text"],output:["text"]},open_weights:true,limit:{context:128e3,output:4096}},"nvidia/llama-3.1-nemotron-safety-guard-8b-v3":{id:"nvidia/llama-3.1-nemotron-safety-guard-8b-v3",name:"Llama 3.1 Nemotron Safety Guard 8B v3",description:"Safety model for policy screening, moderation, and risk-aware routing workflows",family:"nemotron",attachment:false,reasoning:false,tool_call:false,temperature:false,release_date:"2025-10-28",last_updated:"2025-10-28",modalities:{input:["text"],output:["text"]},open_weights:true,limit:{context:128e3,output:4096}},"nvidia/nemotron-3-ultra-550b-a55b":{id:"nvidia/nemotron-3-ultra-550b-a55b",name:"Nemotron 3 Ultra 550B A55B",description:"Largest Nemotron 3 model for maximum open-weight reasoning and agent accuracy",family:"nemotron",attachment:false,reasoning:true,tool_call:true,temperature:true,release_date:"2026-06-04",last_updated:"2026-06-04",modalities:{input:["text"],output:["text"]},open_weights:true,limit:{context:1e6,output:128e3},benchmarks:[{name:"SWE-Bench Verified",score:70.7,metric:"resolved",source:"https://huggingface.co/nvidia/NVIDIA-Nemotron-3-Ultra-550B-A55B-BF16",date:"2026-06-04"},{name:"SWE-Bench Multilingual",score:67.7,metric:"resolve rate",source:"https://huggingface.co/nvidia/NVIDIA-Nemotron-3-Ultra-550B-A55B-BF16",date:"2026-06-04"},{name:"Terminal-Bench",score:56.4,metric:"success rate",version:"2.1",source:"https://huggingface.co/nvidia/NVIDIA-Nemotron-3-Ultra-550B-A55B-BF16",date:"2026-06-04"},{name:"GPQA",score:87,metric:"accuracy",variant:"no tools",source:"https://huggingface.co/nvidia/NVIDIA-Nemotron-3-Ultra-550B-A55B-BF16",date:"2026-06-04"},{name:"Humanity's Last Exam",score:26.7,metric:"accuracy",variant:"no tools",source:"https://huggingface.co/nvidia/NVIDIA-Nemotron-3-Ultra-550B-A55B-BF16",date:"2026-06-04"},{name:"Humanity's Last Exam",score:37.4,metric:"accuracy",variant:"with tools",source:"https://huggingface.co/nvidia/NVIDIA-Nemotron-3-Ultra-550B-A55B-BF16",date:"2026-06-04"},{name:"LiveCodeBench",score:89,metric:"pass@1",version:"v6",source:"https://huggingface.co/nvidia/NVIDIA-Nemotron-3-Ultra-550B-A55B-BF16",date:"2026-06-04"},{name:"MMLU-Pro",score:86.8,metric:"accuracy",source:"https://huggingface.co/nvidia/NVIDIA-Nemotron-3-Ultra-550B-A55B-BF16",date:"2026-06-04"},{name:"BrowseComp",score:44.4,metric:"accuracy",source:"https://huggingface.co/nvidia/NVIDIA-Nemotron-3-Ultra-550B-A55B-BF16",date:"2026-06-04"},{name:"IFBench",score:81.7,metric:"accuracy",variant:"prompt loose",source:"https://huggingface.co/nvidia/NVIDIA-Nemotron-3-Ultra-550B-A55B-BF16",date:"2026-06-04"},{name:"GDPval",score:46.7,metric:"wins or ties",source:"https://huggingface.co/nvidia/NVIDIA-Nemotron-3-Ultra-550B-A55B-BF16",date:"2026-06-04"}]},"nvidia/nemotron-3-nano-omni-30b-a3b-reasoning":{id:"nvidia/nemotron-3-nano-omni-30b-a3b-reasoning",name:"Nemotron 3 Nano Omni 30B A3B Reasoning",description:"Open Nemotron omni model combining reasoning with text, vision, and audio",family:"nemotron",attachment:true,reasoning:true,tool_call:true,temperature:true,release_date:"2026-04-28",last_updated:"2026-04-28",modalities:{input:["text","image","video","audio"],output:["text"]},open_weights:true,limit:{context:256e3,output:65536}},"nvidia/nemotron-cascade-2-30b-a3b":{id:"nvidia/nemotron-cascade-2-30b-a3b",name:"Nemotron Cascade 2 30B A3B",description:"Nemotron model for efficient reasoning, coding, and specialized AI agents",family:"nemotron",attachment:false,reasoning:true,tool_call:true,temperature:true,release_date:"2026-03-24",last_updated:"2026-04-09",modalities:{input:["text"],output:["text"]},open_weights:true,limit:{context:256e3,output:32768}},"nvidia/llama-nemotron-rerank-vl-1b-v2":{id:"nvidia/llama-nemotron-rerank-vl-1b-v2",name:"Llama Nemotron Rerank VL 1B v2",description:"Reranking model for improving retrieval quality in search and recommendation systems",family:"nemotron",attachment:true,reasoning:false,tool_call:false,temperature:false,release_date:"2026-03-31",last_updated:"2026-03-31",modalities:{input:["text","image"],output:["text"]},open_weights:true,limit:{context:128e3,output:4096}},"nvidia/nemotron-mini-4b-instruct":{id:"nvidia/nemotron-mini-4b-instruct",name:"Nemotron Mini 4B Instruct",description:"Compact Nemotron model for efficient reasoning and deployable AI agents",family:"nemotron",attachment:false,reasoning:false,tool_call:true,temperature:true,release_date:"2024-08-21",last_updated:"2024-08-26",modalities:{input:["text"],output:["text"]},open_weights:true,limit:{context:128e3,output:8192}},"nvidia/llama-3.1-nemotron-ultra-253b":{id:"nvidia/llama-3.1-nemotron-ultra-253b",name:"Llama 3.1 Nemotron Ultra 253B",description:"Flagship Nemotron model for high-throughput reasoning and complex agents",family:"nemotron",attachment:false,reasoning:true,tool_call:true,temperature:true,release_date:"2025-04-07",last_updated:"2025-04-07",modalities:{input:["text"],output:["text"]},open_weights:true,limit:{context:128e3,output:8192}},"nvidia/nemotron-3-content-safety":{id:"nvidia/nemotron-3-content-safety",name:"Nemotron 3 Content Safety",description:"Safety model for policy screening, moderation, and risk-aware routing workflows",family:"nemotron",attachment:false,reasoning:false,tool_call:false,temperature:false,release_date:"2026-04-16",last_updated:"2026-04-16",modalities:{input:["text"],output:["text"]},open_weights:true,limit:{context:128e3,output:4096}},"nvidia/llama-3.3-nemotron-super-49b-v1":{id:"nvidia/llama-3.3-nemotron-super-49b-v1",name:"Llama 3.3 Nemotron Super 49B v1",description:"Nemotron model for efficient reasoning, coding, and specialized AI agents",family:"nemotron",attachment:false,reasoning:true,tool_call:true,temperature:true,release_date:"2025-04-07",last_updated:"2025-04-07",modalities:{input:["text"],output:["text"]},open_weights:true,limit:{context:131072,output:131072}},"nvidia/nemotron-nano-12b-v2-vl":{id:"nvidia/nemotron-nano-12b-v2-vl",name:"Nemotron Nano 12B v2 VL",description:"Nemotron multimodal model for visual reasoning and agentic AI workflows",family:"nemotron",attachment:true,reasoning:true,tool_call:true,temperature:true,release_date:"2025-10-28",last_updated:"2025-10-28",modalities:{input:["text","image","video"],output:["text"]},open_weights:true,limit:{context:128e3,output:128e3}},"nvidia/nemotron-3.5-content-safety":{id:"nvidia/nemotron-3.5-content-safety",name:"Nemotron 3.5 Content Safety",description:"Safety model for policy screening, moderation, and risk-aware routing workflows",family:"nemotron",attachment:true,reasoning:true,tool_call:false,temperature:true,release_date:"2026-06-04",last_updated:"2026-06-04",modalities:{input:["text","image"],output:["text"]},open_weights:true,limit:{context:128e3,output:8192}},"nvidia/llama-3.3-nemotron-super-49b-v1.5":{id:"nvidia/llama-3.3-nemotron-super-49b-v1.5",name:"Llama 3.3 Nemotron Super 49B v1.5",description:"Nemotron model for efficient reasoning, coding, and specialized AI agents",family:"nemotron",attachment:false,reasoning:true,tool_call:true,temperature:true,release_date:"2025-07-25",last_updated:"2025-07-25",modalities:{input:["text"],output:["text"]},open_weights:true,limit:{context:131072,output:131072}},"nvidia/llama-3.1-nemotron-70b-instruct":{id:"nvidia/llama-3.1-nemotron-70b-instruct",name:"Llama 3.1 Nemotron 70B Instruct",description:"Nemotron model for efficient reasoning, coding, and specialized AI agents",family:"nemotron",attachment:false,reasoning:false,tool_call:true,temperature:true,release_date:"2025-04-15",last_updated:"2025-04-15",modalities:{input:["text"],output:["text"]},open_weights:true,limit:{context:128e3,output:8192}},"xiaomi/mimo-v2.6-pro":{id:"xiaomi/mimo-v2.6-pro",name:"MiMo-V2.6-Pro",description:"Stronger MiMo Pro tier for multimodal reasoning and coding-agent execution",family:"mimo",attachment:true,reasoning:true,tool_call:true,temperature:true,release_date:"2026-09-22",last_updated:"2026-09-22",modalities:{input:["text","image","audio","video"],output:["text"]},open_weights:true,limit:{context:1048576,output:131072},weights:[{label:"Hugging Face",url:"https://huggingface.co/XiaomiMiMo/MiMo-V2.6-Pro-RL"}],benchmarks:[{name:"DeepSWE",score:71.9,metric:"score",variant:"MiMo-V2.6 Pro comparison column",version:"1.1",source:"https://huggingface.co/XiaomiMiMo/MiMo-V2.6-Flash-RL"},{name:"ProgramBench",score:26.5,metric:"score",variant:"MiMo-V2.6 Pro comparison column",source:"https://huggingface.co/XiaomiMiMo/MiMo-V2.6-Flash-RL"},{name:"MiMo Code Bench",score:63.2,metric:"score",variant:"MiMo-V2.6 Pro comparison column",source:"https://huggingface.co/XiaomiMiMo/MiMo-V2.6-Flash-RL"},{name:"AutomationBench",score:53.1,metric:"score",variant:"MiMo-V2.6 Pro comparison column",version:"1.0.6",source:"https://huggingface.co/XiaomiMiMo/MiMo-V2.6-Flash-RL"},{name:"Toolathlon-Verified",score:76.9,metric:"score",variant:"MiMo-V2.6 Pro comparison column",source:"https://huggingface.co/XiaomiMiMo/MiMo-V2.6-Flash-RL"},{name:"GDPval-AA",score:1673,metric:"Elo",variant:"MiMo-V2.6 Pro comparison column",version:"2.1",source:"https://huggingface.co/XiaomiMiMo/MiMo-V2.6-Flash-RL"},{name:"Agents' Last Exam",score:31.6,metric:"score",variant:"MiMo-V2.6 Pro comparison column",source:"https://huggingface.co/XiaomiMiMo/MiMo-V2.6-Flash-RL"},{name:"Terminal-Bench",score:34.9,metric:"score",variant:"MiMo-V2.6 Pro comparison column",version:"4.0",source:"https://huggingface.co/XiaomiMiMo/MiMo-V2.6-Flash-RL"},{name:"Terminal-Bench",score:89.9,metric:"score",variant:"MiMo-V2.6 Pro comparison column",version:"2.1",source:"https://huggingface.co/XiaomiMiMo/MiMo-V2.6-Flash-RL"},{name:"OSWorld-Verified",score:82,metric:"score",variant:"MiMo-V2.6 Pro comparison column",source:"https://huggingface.co/XiaomiMiMo/MiMo-V2.6-Flash-RL"},{name:"JobBench",score:62,metric:"score",variant:"MiMo-V2.6 Pro comparison column",source:"https://huggingface.co/XiaomiMiMo/MiMo-V2.6-Flash-RL"},{name:"CyberGym",score:94,metric:"score",variant:"MiMo-V2.6 Pro comparison column",source:"https://huggingface.co/XiaomiMiMo/MiMo-V2.6-Flash-RL"},{name:"MiMo Cyber Bench",score:80.2,metric:"score",variant:"MiMo-V2.6 Pro comparison column",source:"https://huggingface.co/XiaomiMiMo/MiMo-V2.6-Flash-RL"},{name:"ExploitGym",score:17.8,metric:"score",variant:"MiMo-V2.6 Pro comparison column",source:"https://huggingface.co/XiaomiMiMo/MiMo-V2.6-Flash-RL"},{name:"ExploitBench",score:47.9,metric:"score",variant:"MiMo-V2.6 Pro comparison column",source:"https://huggingface.co/XiaomiMiMo/MiMo-V2.6-Flash-RL"},{name:"SEC-Bench Pro",score:66.3,metric:"score",variant:"MiMo-V2.6 Pro comparison column",source:"https://huggingface.co/XiaomiMiMo/MiMo-V2.6-Flash-RL"},{name:"MiMo VisualCoding",score:72.3,metric:"score",variant:"MiMo-V2.6 Pro comparison column",source:"https://huggingface.co/XiaomiMiMo/MiMo-V2.6-Flash-RL"}]},"xiaomi/mimo-v2-flash":{id:"xiaomi/mimo-v2-flash",name:"MiMo-V2-Flash",description:"MiMo flash model for fast multimodal assistance and agent workflows",family:"mimo",attachment:false,reasoning:true,tool_call:true,temperature:true,knowledge:"2024-12-01",release_date:"2025-12-16",last_updated:"2026-02-04",modalities:{input:["text"],output:["text"]},open_weights:true,limit:{context:262144,output:65536},weights:[{label:"Hugging Face",url:"https://huggingface.co/XiaomiMiMo/MiMo-V2-Flash"}]},"xiaomi/mimo-v2.5":{id:"xiaomi/mimo-v2.5",name:"MiMo-V2.5",description:"Open MiMo model for multimodal coding agents and long-context automation",family:"mimo",attachment:true,reasoning:true,tool_call:true,temperature:true,knowledge:"2024-12",release_date:"2026-04-22",last_updated:"2026-04-22",modalities:{input:["text","image","audio","video"],output:["text"]},open_weights:true,limit:{context:1048576,output:131072},weights:[{label:"Hugging Face",url:"https://huggingface.co/XiaomiMiMo/MiMo-V2.5"}],benchmarks:[{name:"MiMo Coding Bench",score:71.8,metric:"score",source:"https://huggingface.co/XiaomiMiMo/MiMo-V2.5"},{name:"Claw-Eval",score:62.3,metric:"score",variant:"text",source:"https://huggingface.co/XiaomiMiMo/MiMo-V2.5"},{name:"Terminal-Bench",score:65.8,metric:"score",version:"2.0",source:"https://huggingface.co/XiaomiMiMo/MiMo-V2.5"},{name:"SWE-Bench Pro",score:56.1,metric:"score",source:"https://huggingface.co/XiaomiMiMo/MiMo-V2.5"},{name:"CharXiv Reasoning",score:81,metric:"score",source:"https://huggingface.co/XiaomiMiMo/MiMo-V2.5"},{name:"MMMU-Pro",score:77.9,metric:"score",source:"https://huggingface.co/XiaomiMiMo/MiMo-V2.5"},{name:"HR-Bench",score:88.5,metric:"score",variant:"4K",source:"https://huggingface.co/XiaomiMiMo/MiMo-V2.5"},{name:"OmniDocBench",score:87.2,metric:"score",source:"https://huggingface.co/XiaomiMiMo/MiMo-V2.5"},{name:"Claw-Eval",score:23.8,metric:"score",variant:"multimodal",source:"https://huggingface.co/XiaomiMiMo/MiMo-V2.5"},{name:"Video-MME",score:87.7,metric:"score",source:"https://huggingface.co/XiaomiMiMo/MiMo-V2.5"},{name:"DailyOmni",score:83.5,metric:"score",source:"https://huggingface.co/XiaomiMiMo/MiMo-V2.5"},{name:"VideoHolmes",score:64,metric:"score",source:"https://huggingface.co/XiaomiMiMo/MiMo-V2.5"}]},"xiaomi/mimo-v2-omni":{id:"xiaomi/mimo-v2-omni",name:"MiMo-V2-Omni",description:"MiMo omni model for text, image, video, audio, and agents",family:"mimo",attachment:true,reasoning:true,tool_call:true,temperature:true,knowledge:"2024-12",release_date:"2026-03-18",last_updated:"2026-03-18",modalities:{input:["text","image","audio","video","pdf"],output:["text"]},open_weights:false,limit:{context:262144,output:131072}},"xiaomi/mimo-v2.6-pro-ultraspeed":{id:"xiaomi/mimo-v2.6-pro-ultraspeed",name:"MiMo-V2.6-Pro-UltraSpeed",description:"MiMo pro model for strong multimodal reasoning and agent execution",family:"mimo",attachment:true,reasoning:true,tool_call:true,temperature:true,release_date:"2026-09-21",last_updated:"2026-09-21",modalities:{input:["text","image","audio","video"],output:["text"]},open_weights:true,limit:{context:1048576,output:131072},weights:[{label:"Hugging Face",url:"https://huggingface.co/XiaomiMiMo/MiMo-V2.6-Pro-RL"}]},"xiaomi/mimo-v2-pro":{id:"xiaomi/mimo-v2-pro",name:"MiMo-V2-Pro",description:"Earlier MiMo Pro model for multimodal agents, reasoning, and code tasks",family:"mimo",attachment:false,reasoning:true,tool_call:true,temperature:true,knowledge:"2024-12",release_date:"2026-03-18",last_updated:"2026-03-18",modalities:{input:["text"],output:["text"]},open_weights:false,limit:{context:1048576,output:131072}},"xiaomi/mimo-v2.5-pro":{id:"xiaomi/mimo-v2.5-pro",name:"MiMo-V2.5-Pro",description:"Stronger MiMo Pro tier for multimodal reasoning and coding-agent execution",family:"mimo",attachment:false,reasoning:true,tool_call:true,temperature:true,knowledge:"2024-12",release_date:"2026-04-22",last_updated:"2026-04-22",modalities:{input:["text"],output:["text"]},open_weights:true,limit:{context:1048576,output:131072},weights:[{label:"Hugging Face",url:"https://huggingface.co/XiaomiMiMo/MiMo-V2.5-Pro"}],benchmarks:[{name:"SWE-Bench Verified",score:78.9,metric:"resolved",source:"https://huggingface.co/XiaomiMiMo/MiMo-V2.5-Pro"},{name:"SWE-Bench Pro",score:57.2,metric:"resolve rate",source:"https://mimo.xiaomi.com/mimo-v2-5-pro/",date:"2026-04-22"},{name:"GPQA Diamond",score:86.6,metric:"accuracy",source:"https://mimo.xiaomi.com/mimo-v2-5-pro/",date:"2026-04-22"},{name:"DeepSWE",score:19,metric:"score",variant:"MiMo-V2.5 Pro comparison column",version:"1.1",source:"https://huggingface.co/XiaomiMiMo/MiMo-V2.6-Flash-RL"},{name:"ProgramBench",score:12.5,metric:"score",variant:"MiMo-V2.5 Pro comparison column",source:"https://huggingface.co/XiaomiMiMo/MiMo-V2.6-Flash-RL"},{name:"MiMo Code Bench",score:40.4,metric:"score",variant:"MiMo-V2.5 Pro comparison column",source:"https://huggingface.co/XiaomiMiMo/MiMo-V2.6-Flash-RL"},{name:"AutomationBench",score:16,metric:"score",variant:"MiMo-V2.5 Pro comparison column",version:"1.0.6",source:"https://huggingface.co/XiaomiMiMo/MiMo-V2.6-Flash-RL"},{name:"Toolathlon-Verified",score:49.1,metric:"score",variant:"MiMo-V2.5 Pro comparison column",source:"https://huggingface.co/XiaomiMiMo/MiMo-V2.6-Flash-RL"},{name:"GDPval-AA",score:1107,metric:"Elo",variant:"MiMo-V2.5 Pro comparison column",version:"2.1",source:"https://huggingface.co/XiaomiMiMo/MiMo-V2.6-Flash-RL"},{name:"Agents' Last Exam",score:13.2,metric:"score",variant:"MiMo-V2.5 Pro comparison column",source:"https://huggingface.co/XiaomiMiMo/MiMo-V2.6-Flash-RL"},{name:"Terminal-Bench",score:1.5,metric:"score",variant:"MiMo-V2.5 Pro comparison column",version:"4.0",source:"https://huggingface.co/XiaomiMiMo/MiMo-V2.6-Flash-RL"},{name:"Terminal-Bench",score:65.2,metric:"score",variant:"MiMo-V2.5 Pro comparison column",version:"2.1",source:"https://huggingface.co/XiaomiMiMo/MiMo-V2.6-Flash-RL"},{name:"JobBench",score:25,metric:"score",variant:"MiMo-V2.5 Pro comparison column",source:"https://huggingface.co/XiaomiMiMo/MiMo-V2.6-Flash-RL"},{name:"CyberGym",score:40,metric:"score",variant:"MiMo-V2.5 Pro comparison column",source:"https://huggingface.co/XiaomiMiMo/MiMo-V2.6-Flash-RL"},{name:"MiMo Cyber Bench",score:0,metric:"score",variant:"MiMo-V2.5 Pro comparison column",source:"https://huggingface.co/XiaomiMiMo/MiMo-V2.6-Flash-RL"},{name:"ExploitGym",score:.2,metric:"score",variant:"MiMo-V2.5 Pro comparison column",source:"https://huggingface.co/XiaomiMiMo/MiMo-V2.6-Flash-RL"},{name:"ExploitBench",score:16.6,metric:"score",variant:"MiMo-V2.5 Pro comparison column",source:"https://huggingface.co/XiaomiMiMo/MiMo-V2.6-Flash-RL"},{name:"SEC-Bench Pro",score:17.7,metric:"score",variant:"MiMo-V2.5 Pro comparison column",source:"https://huggingface.co/XiaomiMiMo/MiMo-V2.6-Flash-RL"}]},"xiaomi/mimo-v2.6-flash":{id:"xiaomi/mimo-v2.6-flash",name:"MiMo-V2.6-Flash",description:"MiMo Flash model for multimodal coding agents and long-context automation",family:"mimo",attachment:true,reasoning:true,tool_call:true,temperature:true,release_date:"2026-09-22",last_updated:"2026-09-22",modalities:{input:["text","image","audio","video"],output:["text"]},open_weights:true,limit:{context:1048576,output:131072},weights:[{label:"Hugging Face",url:"https://huggingface.co/XiaomiMiMo/MiMo-V2.6-Flash-RL"}],benchmarks:[{name:"DeepSWE",score:67.9,metric:"score",version:"1.1",source:"https://huggingface.co/XiaomiMiMo/MiMo-V2.6-Flash-RL"},{name:"ProgramBench",score:26,metric:"score",source:"https://huggingface.co/XiaomiMiMo/MiMo-V2.6-Flash-RL"},{name:"MiMo Code Bench",score:61.2,metric:"score",source:"https://huggingface.co/XiaomiMiMo/MiMo-V2.6-Flash-RL"},{name:"AutomationBench",score:52.3,metric:"score",version:"1.0.6",source:"https://huggingface.co/XiaomiMiMo/MiMo-V2.6-Flash-RL"},{name:"Toolathlon-Verified",score:73.6,metric:"score",source:"https://huggingface.co/XiaomiMiMo/MiMo-V2.6-Flash-RL"},{name:"Agents' Last Exam",score:27.6,metric:"score",source:"https://huggingface.co/XiaomiMiMo/MiMo-V2.6-Flash-RL"},{name:"Terminal-Bench",score:28.8,metric:"score",version:"4.0",source:"https://huggingface.co/XiaomiMiMo/MiMo-V2.6-Flash-RL"},{name:"Terminal-Bench",score:87.6,metric:"score",version:"2.1",source:"https://huggingface.co/XiaomiMiMo/MiMo-V2.6-Flash-RL"},{name:"OSWorld-Verified",score:80.8,metric:"score",source:"https://huggingface.co/XiaomiMiMo/MiMo-V2.6-Flash-RL"},{name:"JobBench",score:61.2,metric:"score",source:"https://huggingface.co/XiaomiMiMo/MiMo-V2.6-Flash-RL"},{name:"CyberGym",score:95.1,metric:"score",source:"https://huggingface.co/XiaomiMiMo/MiMo-V2.6-Flash-RL"},{name:"MiMo Cyber Bench",score:77.2,metric:"score",source:"https://huggingface.co/XiaomiMiMo/MiMo-V2.6-Flash-RL"},{name:"ExploitGym",score:6,metric:"score",source:"https://huggingface.co/XiaomiMiMo/MiMo-V2.6-Flash-RL"},{name:"ExploitBench",score:25.3,metric:"score",source:"https://huggingface.co/XiaomiMiMo/MiMo-V2.6-Flash-RL"},{name:"SEC-Bench Pro",score:47.5,metric:"score",source:"https://huggingface.co/XiaomiMiMo/MiMo-V2.6-Flash-RL"},{name:"MiMo VisualCoding",score:71.5,metric:"score",source:"https://huggingface.co/XiaomiMiMo/MiMo-V2.6-Flash-RL"}]},"xiaomi/mimo-v2.5-pro-ultraspeed":{id:"xiaomi/mimo-v2.5-pro-ultraspeed",name:"MiMo-V2.5-Pro-UltraSpeed",description:"MiMo pro model for strong multimodal reasoning and agent execution",family:"mimo",attachment:false,reasoning:true,tool_call:true,temperature:true,knowledge:"2024-12",release_date:"2026-06-08",last_updated:"2026-06-09",modalities:{input:["text"],output:["text"]},open_weights:true,limit:{context:1048576,output:131072},weights:[{label:"Hugging Face",url:"https://huggingface.co/XiaomiMiMo/MiMo-V2.5-Pro-FP4-DFlash"}]},"minimax/MiniMax-M3":{id:"minimax/MiniMax-M3",name:"MiniMax-M3",description:"MiniMax multimodal model for long-context coding, perception, and agent planning",family:"minimax",attachment:true,reasoning:true,tool_call:true,temperature:true,release_date:"2026-06-01",last_updated:"2026-06-01",modalities:{input:["text","image","video"],output:["text"]},open_weights:true,limit:{context:1048576,output:512e3},weights:[{label:"Hugging Face",url:"https://huggingface.co/MiniMaxAI/MiniMax-M3"}],benchmarks:[{name:"SWE-Bench Verified",score:80.5,metric:"resolved",harness:"Claude Code",source:"https://www.minimax.io/blog/minimax-m3",date:"2026-06-01"},{name:"SWE-Bench Pro",score:59,metric:"resolve rate",harness:"Claude Code",source:"https://www.minimax.io/blog/minimax-m3",date:"2026-06-01"},{name:"Terminal-Bench",score:66,metric:"success rate",version:"2.1",source:"https://www.minimax.io/blog/minimax-m3",date:"2026-06-01"},{name:"BrowseComp",score:83.52,metric:"accuracy",source:"https://www.minimax.io/blog/minimax-m3",date:"2026-06-01"},{name:"MCP Atlas",score:74.2,metric:"success rate",source:"https://www.minimax.io/blog/minimax-m3",date:"2026-06-01"},{name:"OSWorld-Verified",score:70.06,metric:"success rate",source:"https://www.minimax.io/blog/minimax-m3",date:"2026-06-01"}]},"minimax/MiniMax-M2.1":{id:"minimax/MiniMax-M2.1",name:"MiniMax-M2.1",description:"Earlier MiniMax agent model for practical coding and productivity tasks",family:"minimax",attachment:false,reasoning:true,tool_call:true,temperature:true,release_date:"2025-12-23",last_updated:"2025-12-23",modalities:{input:["text"],output:["text"]},open_weights:true,limit:{context:204800,output:131072},weights:[{label:"Hugging Face",url:"https://huggingface.co/MiniMaxAI/MiniMax-M2.1"}],benchmarks:[{name:"SWE-Bench Verified",score:74,metric:"resolved",source:"https://huggingface.co/MiniMaxAI/MiniMax-M2.1"},{name:"SWE-Bench Pro",score:36.81,metric:"resolve rate",dataset:"public",source:"https://labs.scale.com/leaderboard/swe_bench_pro_public"}]},"minimax/image-01":{id:"minimax/image-01",name:"MiniMax image-01",description:"MiniMax text-to-image generation model with reference-image support",family:"minimax",attachment:true,reasoning:false,tool_call:false,temperature:false,release_date:"2025-02-15",last_updated:"2026-08-25",modalities:{input:["text","image"],output:["image"]},open_weights:false,limit:{context:0,output:0}},"minimax/MiniMax-M2-Her":{id:"minimax/MiniMax-M2-Her",name:"MiniMax-M2 Her",description:"MiniMax M2 variant tuned for conversational and character-driven agent interactions",family:"minimax",attachment:false,reasoning:true,tool_call:true,temperature:true,release_date:"2026-01-23",last_updated:"2026-01-23",modalities:{input:["text"],output:["text"]},open_weights:false,limit:{context:65536,output:2048}},"minimax/MiniMax-M2.5":{id:"minimax/MiniMax-M2.5",name:"MiniMax-M2.5",description:"Prior MiniMax coding model for agent workflows, office edits, and automation",family:"minimax",attachment:false,reasoning:true,tool_call:true,temperature:true,release_date:"2026-02-12",last_updated:"2026-02-12",modalities:{input:["text"],output:["text"]},open_weights:true,limit:{context:204800,output:131072},weights:[{label:"Hugging Face",url:"https://huggingface.co/MiniMaxAI/MiniMax-M2.5"}],benchmarks:[{name:"SWE-Bench Verified",score:75.8,metric:"resolved",source:"https://www.swebench.com/"},{name:"SWE-Atlas Codebase QnA",score:10.3,metric:"score",harness:"Mini-SWE-Agent",source:"https://labs.scale.com/leaderboard/sweatlas-qna"},{name:"SWE-Atlas Refactoring",score:19.52,metric:"score",harness:"Mini-SWE-Agent",source:"https://labs.scale.com/leaderboard/sweatlas-refactoring"},{name:"SWE-Atlas Test Writing",score:18.6,metric:"score",harness:"Mini-SWE-Agent",source:"https://labs.scale.com/leaderboard/sweatlas-tw"}]},"minimax/MiniMax-M2.7":{id:"minimax/MiniMax-M2.7",name:"MiniMax-M2.7",description:"Open MiniMax flagship for coding agents, office automation, and complex environments",family:"minimax",attachment:false,reasoning:true,tool_call:true,temperature:true,release_date:"2026-03-18",last_updated:"2026-03-18",modalities:{input:["text"],output:["text"]},open_weights:true,limit:{context:204800,output:131072},weights:[{label:"Hugging Face",url:"https://huggingface.co/MiniMaxAI/MiniMax-M2.7"}],benchmarks:[{name:"SWE-Bench Verified",score:79.9,metric:"resolved",harness:"Claude Code",source:"https://www.minimax.io/blog/minimax-m3",date:"2026-06-01"},{name:"SWE-Bench Pro",score:56.2,metric:"resolve rate",harness:"Claude Code",source:"https://www.minimax.io/blog/minimax-m3",date:"2026-06-01"},{name:"Terminal-Bench",score:51.1,metric:"success rate",version:"2.1",source:"https://www.minimax.io/blog/minimax-m3",date:"2026-06-01"}]},"minimax/MiniMax-M2.7-highspeed":{id:"minimax/MiniMax-M2.7-highspeed",name:"MiniMax-M2.7-highspeed",description:"Low-latency M2.7 variant for interactive coding plans and agent loops",family:"minimax",attachment:false,reasoning:true,tool_call:true,temperature:true,release_date:"2026-03-18",last_updated:"2026-03-18",modalities:{input:["text"],output:["text"]},open_weights:true,limit:{context:204800,output:131072},weights:[{label:"Hugging Face",url:"https://huggingface.co/MiniMaxAI/MiniMax-M2.7"}]},"minimax/MiniMax-M2":{id:"minimax/MiniMax-M2",name:"MiniMax-M2",description:"Efficient open MiniMax model built for coding agents and tool-heavy workflows",family:"minimax",attachment:false,reasoning:true,tool_call:true,temperature:true,release_date:"2025-10-27",last_updated:"2025-10-27",modalities:{input:["text"],output:["text"]},open_weights:true,limit:{context:204800,output:131072},weights:[{label:"Hugging Face",url:"https://huggingface.co/MiniMaxAI/MiniMax-M2"}],benchmarks:[{name:"SWE-Bench Verified",score:69.4,metric:"resolved",source:"https://huggingface.co/MiniMaxAI/MiniMax-M2"}]},"minimax/MiniMax-M2.5-highspeed":{id:"minimax/MiniMax-M2.5-highspeed",name:"MiniMax-M2.5-highspeed",description:"High-speed MiniMax model for low-latency coding and agent workflows",family:"minimax",attachment:false,reasoning:true,tool_call:true,temperature:true,release_date:"2026-02-13",last_updated:"2026-02-13",modalities:{input:["text"],output:["text"]},open_weights:true,limit:{context:204800,output:131072},weights:[{label:"Hugging Face",url:"https://huggingface.co/MiniMaxAI/MiniMax-M2.5"}]},"stepfun/step-5-preview":{id:"stepfun/step-5-preview",name:"Step 5 Preview",description:"StepFun's next-generation flagship base model for coding and professional knowledge work, with native text, image, and video input and a 1M-token context window",attachment:true,reasoning:true,tool_call:true,structured_output:true,release_date:"2026-09-16",last_updated:"2026-09-20",modalities:{input:["text","image","video"],output:["text"]},open_weights:false,limit:{context:1e6,input:1e6,output:1e6}},"stepfun/step-3.5-flash-2603":{id:"stepfun/step-3.5-flash-2603",name:"Step 3.5 Flash 2603",description:"StepFun flash model for efficient multimodal reasoning, coding, and tool use",attachment:false,reasoning:true,tool_call:true,temperature:true,knowledge:"2025-01",release_date:"2026-04-02",last_updated:"2026-04-02",modalities:{input:["text"],output:["text"]},open_weights:true,limit:{context:256e3,input:256e3,output:256e3},weights:[{label:"Hugging Face",url:"https://huggingface.co/stepfun-ai/Step-3.5-Flash"}],benchmarks:[{name:"Artificial Analysis Coding Index",score:34.6,metric:"index",source:"https://openrouter.ai/stepfun/step-3.5-flash/benchmarks",date:"2026-06-02"},{name:"SciCode",score:38.5,metric:"percent correct",source:"https://openrouter.ai/stepfun/step-3.5-flash/benchmarks",date:"2026-06-02"},{name:"Terminal-Bench Hard",score:32.6,metric:"success rate",source:"https://openrouter.ai/stepfun/step-3.5-flash/benchmarks",date:"2026-06-02"}]},"stepfun/step-3.5-flash":{id:"stepfun/step-3.5-flash",name:"Step 3.5 Flash",description:"StepFun flash lane for quick multimodal reasoning and coding assistance",attachment:false,reasoning:true,tool_call:true,temperature:true,knowledge:"2025-01",release_date:"2026-01-29",last_updated:"2026-02-13",modalities:{input:["text"],output:["text"]},open_weights:true,limit:{context:256e3,input:256e3,output:256e3},weights:[{label:"Hugging Face",url:"https://huggingface.co/stepfun-ai/Step-3.5-Flash"}],benchmarks:[{name:"Artificial Analysis Coding Index",score:31.6,metric:"index",source:"https://openrouter.ai/stepfun/step-3.5-flash/benchmarks",date:"2026-06-02"},{name:"SciCode",score:40.4,metric:"percent correct",source:"https://openrouter.ai/stepfun/step-3.5-flash/benchmarks",date:"2026-06-02"},{name:"Terminal-Bench Hard",score:27.3,metric:"success rate",source:"https://openrouter.ai/stepfun/step-3.5-flash/benchmarks",date:"2026-06-02"},{name:"SWE-Bench Verified",score:74.4,metric:"resolved",source:"https://arxiv.org/abs/2602.10604"}]},"stepfun/step-3.7-flash":{id:"stepfun/step-3.7-flash",name:"Step 3.7 Flash",description:"Newer StepFun flash model for faster agents, coding, and multimodal prompts",attachment:true,reasoning:true,tool_call:true,temperature:true,knowledge:"2026-03-01",release_date:"2026-05-29",last_updated:"2026-05-29",modalities:{input:["text","image","video"],output:["text"]},open_weights:true,limit:{context:256e3,input:256e3,output:256e3},weights:[{label:"Hugging Face",url:"https://huggingface.co/stepfun-ai/Step-3.7-Flash"}],benchmarks:[{name:"SWE-Bench Pro",score:56.3,metric:"resolve rate",source:"https://static.stepfun.com/blog/step-3.7-flash/",date:"2026-05-29"},{name:"SWE-Bench Verified",score:76.5,metric:"resolved",source:"https://static.stepfun.com/blog/step-3.7-flash/",date:"2026-05-29"},{name:"Terminal-Bench",score:59.6,metric:"success rate",version:"2.1",source:"https://static.stepfun.com/blog/step-3.7-flash/",date:"2026-05-29"},{name:"Humanity's Last Exam",score:47.2,metric:"accuracy",variant:"with tools",source:"https://static.stepfun.com/blog/step-3.7-flash/",date:"2026-05-29"},{name:"BrowseComp",score:75.8,metric:"accuracy",source:"https://static.stepfun.com/blog/step-3.7-flash/",date:"2026-05-29"},{name:"Toolathlon",score:49.5,metric:"success rate",source:"https://static.stepfun.com/blog/step-3.7-flash/",date:"2026-05-29"},{name:"GDPval",score:45.8,metric:"wins or ties",source:"https://static.stepfun.com/blog/step-3.7-flash/",date:"2026-05-29"},{name:"ClawEval",score:67.1,metric:"pass^3",version:"1.1",source:"https://static.stepfun.com/blog/step-3.7-flash/",date:"2026-05-29"},{name:"Artificial Analysis Coding Index",score:37.1,metric:"index",source:"https://openrouter.ai/stepfun/step-3.7-flash/benchmarks",date:"2026-06-15"},{name:"SciCode",score:40,metric:"percent correct",source:"https://openrouter.ai/stepfun/step-3.7-flash/benchmarks",date:"2026-06-15"},{name:"Terminal-Bench Hard",score:35.6,metric:"success rate",source:"https://openrouter.ai/stepfun/step-3.7-flash/benchmarks",date:"2026-06-15"}]},"sdaia/allam-2-7b":{id:"sdaia/allam-2-7b",name:"ALLaM-2-7b",description:"ALLaM-2-7b instruction tuned model by SDAIA",attachment:false,reasoning:false,tool_call:false,temperature:true,release_date:"2025-01-23",last_updated:"2025-01-23",modalities:{input:["text"],output:["text"]},open_weights:true,limit:{context:4096,output:4096},weights:[{label:"Hugging Face",url:"https://huggingface.co/ALLaM-AI/ALLaM-2.0-7B-Instruct"}]},"zhipuai/glm-4.6v":{id:"zhipuai/glm-4.6v",name:"GLM-4.6V",description:"GLM vision model for visual reasoning, documents, and multimodal agents",family:"glm",attachment:true,reasoning:true,tool_call:true,temperature:true,knowledge:"2025-04",release_date:"2025-12-08",last_updated:"2025-12-08",modalities:{input:["text","image","video"],output:["text"]},open_weights:true,limit:{context:128e3,output:32768},weights:[{label:"Hugging Face",url:"https://huggingface.co/zai-org/GLM-4.6V"}]},"zhipuai/glm-4.5":{id:"zhipuai/glm-4.5",name:"GLM-4.5",description:"Hybrid-reasoning GLM release that made the 4.5 line broadly useful",family:"glm",attachment:false,reasoning:true,tool_call:true,temperature:true,knowledge:"2025-04",release_date:"2025-07-28",last_updated:"2025-07-28",modalities:{input:["text"],output:["text"]},open_weights:true,limit:{context:131072,output:98304},weights:[{label:"Hugging Face",url:"https://huggingface.co/zai-org/GLM-4.5"}],benchmarks:[{name:"Artificial Analysis Coding Index",score:26.3,metric:"index",source:"https://openrouter.ai/z-ai/glm-4.5/benchmarks",date:"2026-03-11"},{name:"SciCode",score:34.8,metric:"percent correct",source:"https://openrouter.ai/z-ai/glm-4.5/benchmarks",date:"2026-03-11"},{name:"Terminal-Bench Hard",score:22,metric:"success rate",source:"https://openrouter.ai/z-ai/glm-4.5/benchmarks",date:"2026-03-11"}]},"zhipuai/glm-5v-turbo":{id:"zhipuai/glm-5v-turbo",name:"GLM-5V-Turbo",description:"Fast GLM vision model for screenshots, documents, and multimodal agent tasks",family:"glm",attachment:true,reasoning:true,tool_call:true,temperature:true,release_date:"2026-04-01",last_updated:"2026-04-01",modalities:{input:["text","image","video","pdf"],output:["text"]},open_weights:false,limit:{context:2e5,output:131072}},"zhipuai/glm-5.3-flash":{id:"zhipuai/glm-5.3-flash",name:"GLM-5.3-Flash",description:"Native multimodal GLM model for efficient coding and long-horizon agent tasks",family:"glm-flash",attachment:true,reasoning:true,tool_call:true,structured_output:true,temperature:true,release_date:"2026-08-26",last_updated:"2026-08-26",modalities:{input:["text","image","video","pdf"],output:["text"]},open_weights:true,limit:{context:1e6,output:131072},benchmarks:[{name:"Terminal-Bench",score:84.3,metric:"pass@1",harness:"Claude Code 2.1.207",variant:"max effort",version:"2.1",source:"https://huggingface.co/zai-org/GLM-5.3-Flash"},{name:"DeepSWE",score:63.4,metric:"resolved",harness:"mini-swe-agent",variant:"max effort",version:"1.1",source:"https://huggingface.co/zai-org/GLM-5.3-Flash"},{name:"Agents' Last Exam",score:26.3,metric:"score",variant:"max effort",source:"https://huggingface.co/zai-org/GLM-5.3-Flash"},{name:"AutomationBench",score:48.8,metric:"pass@1",variant:"max effort",version:"1.0.6",source:"https://huggingface.co/zai-org/GLM-5.3-Flash"},{name:"Humanity's Last Exam",score:55.3,metric:"accuracy",variant:"max effort; with tools",dataset:"full set",source:"https://huggingface.co/zai-org/GLM-5.3-Flash"},{name:"GDPval-AA",score:1773,metric:"Elo",variant:"max effort",version:"2",source:"https://huggingface.co/zai-org/GLM-5.3-Flash"}]},"zhipuai/glm-4.6":{id:"zhipuai/glm-4.6",name:"GLM-4.6",description:"Late GLM-4 workhorse for coding agents, reasoning, and structured tasks",family:"glm",attachment:false,reasoning:true,tool_call:true,temperature:true,knowledge:"2025-04",release_date:"2025-09-30",last_updated:"2025-09-30",modalities:{input:["text"],output:["text"]},open_weights:true,limit:{context:204800,output:131072},weights:[{label:"Hugging Face",url:"https://huggingface.co/zai-org/GLM-4.6"}],benchmarks:[{name:"Artificial Analysis Coding Index",score:29.5,metric:"index",source:"https://openrouter.ai/z-ai/glm-4.6/benchmarks",date:"2026-05-22"},{name:"SciCode",score:38.4,metric:"percent correct",source:"https://openrouter.ai/z-ai/glm-4.6/benchmarks",date:"2026-05-22"},{name:"Terminal-Bench Hard",score:25,metric:"success rate",source:"https://openrouter.ai/z-ai/glm-4.6/benchmarks",date:"2026-05-22"},{name:"SWE-Bench Pro",score:9.67,metric:"resolve rate",dataset:"public",source:"https://labs.scale.com/leaderboard/swe_bench_pro_public"}]},"zhipuai/glm-5":{id:"zhipuai/glm-5",name:"GLM-5",description:"General GLM flagship for coding, analysis, and tool-heavy engineering workflows",family:"glm",attachment:false,reasoning:true,tool_call:true,temperature:true,release_date:"2026-02-12",last_updated:"2026-02-12",modalities:{input:["text"],output:["text"]},open_weights:true,limit:{context:204800,output:131072},weights:[{label:"Hugging Face",url:"https://huggingface.co/zai-org/GLM-5"}],benchmarks:[{name:"SWE-Bench Verified",score:72.8,metric:"resolved",source:"https://www.swebench.com/"},{name:"SWE-Atlas Codebase QnA",score:20.5,metric:"score",harness:"Mini-SWE-Agent",source:"https://labs.scale.com/leaderboard/sweatlas-qna"},{name:"SWE-Atlas Refactoring",score:24.24,metric:"score",harness:"Mini-SWE-Agent",source:"https://labs.scale.com/leaderboard/sweatlas-refactoring"},{name:"SWE-Atlas Test Writing",score:28.74,metric:"score",harness:"Mini-SWE-Agent",source:"https://labs.scale.com/leaderboard/sweatlas-tw"}]},"zhipuai/glm-4.6v-flash":{id:"zhipuai/glm-4.6v-flash",name:"GLM-4.6V-Flash",description:"Lightweight GLM vision model for visual reasoning, documents, and multimodal agents",family:"glm-flash",attachment:true,reasoning:true,tool_call:true,temperature:true,release_date:"2025-12-08",last_updated:"2025-12-08",modalities:{input:["text","image","video"],output:["text"]},open_weights:true,limit:{context:128e3,output:32768},weights:[{label:"Hugging Face",url:"https://huggingface.co/zai-org/GLM-4.6V-Flash"}]},"zhipuai/glm-4.5v":{id:"zhipuai/glm-4.5v",name:"GLM-4.5V",description:"GLM vision model for visual reasoning, documents, and multimodal agents",family:"glm",attachment:true,reasoning:true,tool_call:true,temperature:true,knowledge:"2025-04",release_date:"2025-08-11",last_updated:"2025-08-11",modalities:{input:["text","image","video"],output:["text"]},open_weights:true,limit:{context:64e3,output:16384},weights:[{label:"Hugging Face",url:"https://huggingface.co/zai-org/GLM-4.5V"}],benchmarks:[{name:"Artificial Analysis Coding Index",score:10.9,metric:"index",source:"https://openrouter.ai/z-ai/glm-4.5v/benchmarks",date:"2026-04-29"},{name:"SciCode",score:22.1,metric:"percent correct",source:"https://openrouter.ai/z-ai/glm-4.5v/benchmarks",date:"2026-04-29"},{name:"Terminal-Bench Hard",score:5.3,metric:"success rate",source:"https://openrouter.ai/z-ai/glm-4.5v/benchmarks",date:"2026-04-29"}]},"zhipuai/glm-4.7-flash":{id:"zhipuai/glm-4.7-flash",name:"GLM-4.7-Flash",description:"Budget GLM lane for fast coding help, routing, and everyday automation",family:"glm-flash",attachment:false,reasoning:true,tool_call:true,temperature:true,knowledge:"2025-04",release_date:"2026-01-19",last_updated:"2026-01-19",modalities:{input:["text"],output:["text"]},open_weights:true,limit:{context:2e5,output:131072},weights:[{label:"Hugging Face",url:"https://huggingface.co/zai-org/GLM-4.7-Flash"}],benchmarks:[{name:"SWE-Bench Verified",score:59.2,metric:"resolved",source:"https://huggingface.co/zai-org/GLM-4.7-Flash"}]},"zhipuai/glm-4.7":{id:"zhipuai/glm-4.7",name:"GLM-4.7",description:"Mature GLM model for dependable coding, reasoning, and structured agent tasks",family:"glm",attachment:false,reasoning:true,tool_call:true,temperature:true,knowledge:"2025-04",release_date:"2025-12-22",last_updated:"2025-12-22",modalities:{input:["text"],output:["text"]},open_weights:true,limit:{context:204800,output:131072},weights:[{label:"Hugging Face",url:"https://huggingface.co/zai-org/GLM-4.7"}],benchmarks:[{name:"SWE-Bench Verified",score:73.8,metric:"resolved",source:"https://huggingface.co/zai-org/GLM-4.7"},{name:"Terminal Bench 2.0",score:33.4,metric:"score",source:"https://huggingface.co/zai-org/GLM-4.7"}]},"zhipuai/glm-4.5-flash":{id:"zhipuai/glm-4.5-flash",name:"GLM-4.5-Flash",description:"Efficient GLM model for fast reasoning, coding, and agent workflows",family:"glm-flash",attachment:false,reasoning:true,tool_call:true,temperature:true,knowledge:"2025-04",release_date:"2025-07-28",last_updated:"2025-07-28",modalities:{input:["text"],output:["text"]},open_weights:false,limit:{context:131072,output:98304}},"zhipuai/glm-5.2":{id:"zhipuai/glm-5.2",name:"GLM-5.2",description:"Open flagship GLM for long-horizon coding agents and million-token context work",family:"glm",attachment:false,reasoning:true,tool_call:true,structured_output:true,temperature:true,release_date:"2026-06-13",last_updated:"2026-06-13",modalities:{input:["text"],output:["text"]},open_weights:true,limit:{context:1e6,output:131072},weights:[{label:"Hugging Face",url:"https://huggingface.co/zai-org/GLM-5.2"}],benchmarks:[{name:"SWE-Bench Pro",score:62.1,metric:"resolve rate",source:"https://z.ai/blog/glm-5.2",date:"2026-06-16"},{name:"Terminal-Bench",score:82.7,metric:"success rate",harness:"Claude Code",version:"2.1",source:"https://z.ai/blog/glm-5.2",date:"2026-06-16"},{name:"FrontierSWE",score:74.4,metric:"dominance",source:"https://z.ai/blog/glm-5.2",date:"2026-06-16"},{name:"Humanity's Last Exam",score:40.5,metric:"accuracy",dataset:"text-only subset",source:"https://z.ai/blog/glm-5.2",date:"2026-06-16"},{name:"Humanity's Last Exam",score:54.7,metric:"accuracy",variant:"with tools",dataset:"text-only subset",source:"https://z.ai/blog/glm-5.2",date:"2026-06-16"},{name:"CritPt",score:20.9,metric:"accuracy",source:"https://z.ai/blog/glm-5.2",date:"2026-06-16"},{name:"AIME",score:99.2,metric:"accuracy",version:"2026",source:"https://z.ai/blog/glm-5.2",date:"2026-06-16"},{name:"HMMT",score:94.4,metric:"accuracy",version:"November 2025",source:"https://z.ai/blog/glm-5.2",date:"2026-06-16"},{name:"HMMT",score:92.5,metric:"accuracy",version:"February 2026",source:"https://z.ai/blog/glm-5.2",date:"2026-06-16"},{name:"IMOAnswerBench",score:91,metric:"accuracy",source:"https://z.ai/blog/glm-5.2",date:"2026-06-16"},{name:"GPQA Diamond",score:91.2,metric:"accuracy",source:"https://z.ai/blog/glm-5.2",date:"2026-06-16"},{name:"NL2Repo",score:48.9,metric:"resolve rate",source:"https://z.ai/blog/glm-5.2",date:"2026-06-16"},{name:"DeepSWE",score:46.2,metric:"resolve rate",source:"https://z.ai/blog/glm-5.2",date:"2026-06-16"},{name:"Program Bench",score:63.7,metric:"score",source:"https://z.ai/blog/glm-5.2",date:"2026-06-16"},{name:"Terminal-Bench",score:81,metric:"success rate",harness:"Terminus 2",version:"2.1",source:"https://z.ai/blog/glm-5.2",date:"2026-06-16"},{name:"PostTrainBench",score:34.3,metric:"score",source:"https://z.ai/blog/glm-5.2",date:"2026-06-16"},{name:"SWE Marathon",score:13,metric:"resolve rate",source:"https://z.ai/blog/glm-5.2",date:"2026-06-16"},{name:"MCP Atlas",score:76.8,metric:"score",dataset:"public subset",source:"https://z.ai/blog/glm-5.2",date:"2026-06-16"},{name:"Tool-Decathlon",score:48.2,metric:"score",source:"https://z.ai/blog/glm-5.2",date:"2026-06-16"}]},"zhipuai/glm-5.1":{id:"zhipuai/glm-5.1",name:"GLM-5.1",description:"Strong GLM coding model for agentic engineering, terminals, and repository generation",family:"glm",attachment:false,reasoning:true,tool_call:true,structured_output:true,temperature:true,release_date:"2026-04-07",last_updated:"2026-04-07",modalities:{input:["text"],output:["text"]},open_weights:true,limit:{context:2e5,output:131072},weights:[{label:"Hugging Face",url:"https://huggingface.co/zai-org/GLM-5.1"}],benchmarks:[{name:"Artificial Analysis Coding Agent Index",score:52.7,metric:"average pass@1",harness:"Claude Code",source:"https://artificialanalysis.ai/agents/coding-agents"},{name:"SWE-Atlas Codebase QnA",score:73.2,metric:"pass@1",harness:"Claude Code",source:"https://artificialanalysis.ai/agents/coding-agents"},{name:"SWE-Bench Pro",score:19.8,metric:"pass@1",harness:"Claude Code",dataset:"hard-aa",source:"https://artificialanalysis.ai/agents/coding-agents"},{name:"Terminal-Bench",score:65.1,metric:"pass@1",harness:"Claude Code",version:"2.1",source:"https://artificialanalysis.ai/agents/coding-agents"}]},"zhipuai/glm-4.7-flashx":{id:"zhipuai/glm-4.7-flashx",name:"GLM-4.7-FlashX",description:"Efficient GLM model for fast reasoning, coding, and agent workflows",family:"glm-flash",attachment:false,reasoning:true,tool_call:true,temperature:true,knowledge:"2025-04",release_date:"2026-01-19",last_updated:"2026-01-19",modalities:{input:["text"],output:["text"]},open_weights:true,limit:{context:2e5,output:131072},weights:[{label:"Hugging Face",url:"https://huggingface.co/zai-org/GLM-4.7-Flash"}]},"zhipuai/glm-5-turbo":{id:"zhipuai/glm-5-turbo",name:"GLM-5-Turbo",description:"Faster GLM-5 lane for coding agents that need lower latency",family:"glm",attachment:false,reasoning:true,tool_call:true,structured_output:true,temperature:true,release_date:"2026-03-16",last_updated:"2026-03-16",modalities:{input:["text"],output:["text"]},open_weights:false,limit:{context:2e5,output:131072}},"zhipuai/glm-image":{id:"zhipuai/glm-image",name:"GLM-Image",description:"GLM-Image is an image generation model adopts a hybrid autoregressive + diffusion decoder architecture. In general image generation quality, GLM\u2011Image aligns with mainstream latent diffusion approaches, but it shows significant advantages in text-rendering and knowledge\u2011intensive generation scenarios. It performs especially well in tasks requiring precise semantic understanding and complex information expression, while maintaining strong capabilities in high\u2011fidelity and fine\u2011grained detail generation. In addition to text\u2011to\u2011image generation, GLM\u2011Image also supports a rich set of image\u2011to\u2011image tasks including image editing, style transfer, identity\u2011preserving generation, and multi\u2011subject consistency.",attachment:true,reasoning:false,tool_call:false,temperature:false,release_date:"2026-01-19",last_updated:"2026-01-19",modalities:{input:["text","image"],output:["image"]},open_weights:true,limit:{context:10240,output:0},license:"MIT",weights:[{label:"Hugging Face",url:"https://huggingface.co/zai-org/GLM-Image"}]},"zhipuai/glm-4.5-air":{id:"zhipuai/glm-4.5-air",name:"GLM-4.5-Air",description:"Lighter GLM-4.5 variant for fast coding assistance and cheaper agents",family:"glm-air",attachment:false,reasoning:true,tool_call:true,temperature:true,knowledge:"2025-04",release_date:"2025-07-28",last_updated:"2025-07-28",modalities:{input:["text"],output:["text"]},open_weights:true,limit:{context:131072,output:98304},weights:[{label:"Hugging Face",url:"https://huggingface.co/zai-org/GLM-4.5-Air"}],benchmarks:[{name:"Artificial Analysis Coding Index",score:23.8,metric:"index",source:"https://openrouter.ai/z-ai/glm-4.5-air/benchmarks",date:"2026-05-30"},{name:"SciCode",score:30.6,metric:"percent correct",source:"https://openrouter.ai/z-ai/glm-4.5-air/benchmarks",date:"2026-05-30"},{name:"Terminal-Bench Hard",score:20.5,metric:"success rate",source:"https://openrouter.ai/z-ai/glm-4.5-air/benchmarks",date:"2026-05-30"}]},"zhipuai/glm-5.3":{id:"zhipuai/glm-5.3",name:"GLM-5.3",description:"Flagship GLM model for long-horizon coding, agents, and complex project delivery",family:"glm",attachment:false,reasoning:true,tool_call:true,structured_output:true,temperature:true,release_date:"2026-08-14",last_updated:"2026-08-14",modalities:{input:["text"],output:["text"]},open_weights:true,limit:{context:1e6,output:131072},benchmarks:[{name:"Terminal-Bench",score:88.2,metric:"pass@1",harness:"Claude Code 2.1.207",variant:"max effort",version:"2.1",source:"https://huggingface.co/zai-org/GLM-5.3"},{name:"Terminal-Bench",score:28.3,metric:"avg@3",harness:"Claude Code 2.1.207",variant:"max effort",version:"3.0",source:"https://huggingface.co/zai-org/GLM-5.3"},{name:"DeepSWE",score:66.9,metric:"resolved",harness:"mini-swe-agent",variant:"max effort; 6h timeout; 400K context",version:"1.1",source:"https://huggingface.co/zai-org/GLM-5.3"},{name:"NL2Repo",score:58,metric:"score",variant:"max effort",source:"https://huggingface.co/zai-org/GLM-5.3"},{name:"ProgramBench",score:19,metric:"almost solved",variant:"max effort",source:"https://huggingface.co/zai-org/GLM-5.3"},{name:"FrontierSWE",score:78.1,metric:"dominance score",variant:"max effort",source:"https://huggingface.co/zai-org/GLM-5.3",date:"2026-08-14"},{name:"SWE-Marathon",score:42.5,metric:"score",harness:"Claude Code 2.1.207",variant:"max effort; modified anti-cheat checks",version:"1.1",source:"https://huggingface.co/zai-org/GLM-5.3"},{name:"PostTrainBench",score:39.8,metric:"weighted average",harness:"Claude Code 2.1.207",variant:"max effort; 3 runs; modified external-API checks",source:"https://huggingface.co/zai-org/GLM-5.3"},{name:"CyberGym",score:84.5,metric:"pass@1",harness:"Claude Code 2.1.207",variant:"max effort",source:"https://huggingface.co/zai-org/GLM-5.3"},{name:"ExploitGym",score:105,metric:"tasks solved",harness:"Claude Code 2.1.207",variant:"max effort; 2h rescaled timeout",dataset:"869 tasks",source:"https://huggingface.co/zai-org/GLM-5.3"},{name:"ExploitGym",score:130,metric:"tasks solved",harness:"Claude Code 2.1.207",variant:"max effort; 6h rescaled timeout",dataset:"869 tasks",source:"https://huggingface.co/zai-org/GLM-5.3"},{name:"ExploitBench",score:54.4,metric:"average coverage",harness:"Claude Code 2.1.207",variant:"max effort; union over 3 revisions",source:"https://huggingface.co/zai-org/GLM-5.3"},{name:"Toolathlon-Verified",score:73,metric:"pass@1",variant:"max effort",source:"https://huggingface.co/zai-org/GLM-5.3"},{name:"AutomationBench",score:48.2,metric:"pass@1",variant:"max effort",version:"1.0.6",source:"https://huggingface.co/zai-org/GLM-5.3"},{name:"Agents' Last Exam",score:28.5,metric:"score",harness:"Claude Code 2.1.207",variant:"max effort; CLI",source:"https://huggingface.co/zai-org/GLM-5.3"},{name:"Humanity's Last Exam",score:62.5,metric:"accuracy",variant:"max effort; with tools",source:"https://huggingface.co/zai-org/GLM-5.3"},{name:"GDPval-AA",score:1769,metric:"Elo",variant:"max effort",version:"2",source:"https://huggingface.co/zai-org/GLM-5.3"}]},"amazon/nova-premier":{id:"amazon/nova-premier",name:"Nova Premier",description:"Multimodal model for complex analysis, long-context understanding, tool use, and model distillation",family:"nova",attachment:true,reasoning:false,tool_call:true,temperature:true,knowledge:"2024-10",release_date:"2025-04-30",last_updated:"2025-04-30",modalities:{input:["text","image","video","pdf"],output:["text"]},open_weights:false,limit:{context:1e6,output:1e4}},"amazon/nova-micro":{id:"amazon/nova-micro",name:"Nova Micro",description:"Efficient model for low-latency assistance, extraction, and routine automation",family:"nova-micro",attachment:false,reasoning:false,tool_call:true,temperature:true,knowledge:"2024-10",release_date:"2024-12-03",last_updated:"2024-12-03",modalities:{input:["text"],output:["text"]},open_weights:false,limit:{context:128e3,output:1e4}},"amazon/nova-pro":{id:"amazon/nova-pro",name:"Nova Pro",description:"Flagship model for demanding analysis, coding, and production agent workflows",family:"nova-pro",attachment:true,reasoning:false,tool_call:true,temperature:true,knowledge:"2024-10",release_date:"2024-12-03",last_updated:"2024-12-03",modalities:{input:["text","image","video","pdf"],output:["text"]},open_weights:false,limit:{context:3e5,output:1e4}},"amazon/nova-lite":{id:"amazon/nova-lite",name:"Nova Lite",description:"Efficient model for low-latency assistance, extraction, and routine automation",family:"nova-lite",attachment:true,reasoning:false,tool_call:true,temperature:true,knowledge:"2024-10",release_date:"2024-12-03",last_updated:"2024-12-03",modalities:{input:["text","image","video","pdf"],output:["text"]},open_weights:false,limit:{context:3e5,output:1e4}},"amazon/nova-2-lite":{id:"amazon/nova-2-lite",name:"Nova 2 Lite",description:"Multimodal reasoning model for visual analysis, planning, and tool use",family:"nova",attachment:true,reasoning:true,tool_call:true,temperature:true,knowledge:"2025-10",release_date:"2025-12-02",last_updated:"2025-12-01",modalities:{input:["text","image","video","pdf"],output:["text"]},open_weights:false,limit:{context:1e6,output:65536}},"mistral/codestral-latest":{id:"mistral/codestral-latest",name:"Codestral (latest)",description:"Mistral code model for completions, refactors, and developer IDE workflows",family:"codestral",attachment:false,reasoning:false,tool_call:true,temperature:true,knowledge:"2024-10",release_date:"2024-05-29",last_updated:"2025-01-04",modalities:{input:["text"],output:["text"]},open_weights:true,limit:{context:256e3,output:4096},weights:[{label:"Hugging Face",url:"https://huggingface.co/mistralai/Codestral-22B-v0.1"}],benchmarks:[{name:"Aider Polyglot",score:11.1,metric:"percent correct",source:"https://aider.chat/docs/leaderboards/",date:"2025-01-13"}]},"mistral/mistral-large-2411":{id:"mistral/mistral-large-2411",name:"Mistral Large 2.1",description:"Flagship Mistral model for advanced reasoning, coding, and multilingual work",family:"mistral-large",attachment:false,reasoning:false,tool_call:true,temperature:true,knowledge:"2024-11",release_date:"2024-11-18",last_updated:"2024-11-18",modalities:{input:["text"],output:["text"]},open_weights:true,limit:{context:131072,output:16384},weights:[{label:"Hugging Face",url:"https://huggingface.co/mistralai/Mistral-Large-Instruct-2411"}],benchmarks:[{name:"Artificial Analysis Coding Index",score:13.8,metric:"index",source:"https://openrouter.ai/mistralai/mistral-large-2407/benchmarks",date:"2026-03-11"},{name:"SciCode",score:29.2,metric:"percent correct",source:"https://openrouter.ai/mistralai/mistral-large-2407/benchmarks",date:"2026-03-11"},{name:"Terminal-Bench Hard",score:6.1,metric:"success rate",source:"https://openrouter.ai/mistralai/mistral-large-2407/benchmarks",date:"2026-03-11"}]},"mistral/mistral-nemo":{id:"mistral/mistral-nemo",name:"Mistral Nemo",description:"Efficient Mistral-NVIDIA open model for multilingual chat and local deployment",family:"mistral-nemo",attachment:false,reasoning:false,tool_call:true,temperature:true,knowledge:"2024-07",release_date:"2024-07-01",last_updated:"2024-07-01",modalities:{input:["text"],output:["text"]},open_weights:true,limit:{context:128e3,output:128e3},weights:[{label:"Hugging Face",url:"https://huggingface.co/mistralai/Mistral-Nemo-Instruct-2407"}]},"mistral/mistral-large-latest":{id:"mistral/mistral-large-latest",name:"Mistral Large (latest)",description:"Flagship Mistral model for advanced reasoning, coding, and multilingual work",family:"mistral-large",attachment:true,reasoning:false,tool_call:true,temperature:true,knowledge:"2024-11",release_date:"2024-11-01",last_updated:"2025-12-02",modalities:{input:["text","image"],output:["text"]},open_weights:true,limit:{context:262144,output:262144},weights:[{label:"Hugging Face",url:"https://huggingface.co/mistralai/Mistral-Large-3-675B-Instruct-2512"}]},"mistral/mistral-small-latest":{id:"mistral/mistral-small-latest",name:"Mistral Small (latest)",description:"Efficient Mistral model for fast chat, extraction, and production assistants",family:"mistral-small",attachment:true,reasoning:true,tool_call:true,temperature:true,knowledge:"2025-06",release_date:"2026-03-16",last_updated:"2026-03-16",modalities:{input:["text","image"],output:["text"]},open_weights:true,limit:{context:256e3,output:256e3},weights:[{label:"Hugging Face",url:"https://huggingface.co/mistralai/Mistral-Small-4-119B-2603"}]},"mistral/ministral-3b":{id:"mistral/ministral-3b",name:"Ministral 3B",description:"Compact Mistral model for edge, latency-sensitive, and cost-efficient workloads",family:"ministral",attachment:false,reasoning:false,tool_call:true,temperature:true,knowledge:"2024-03",release_date:"2024-10-16",last_updated:"2024-10-16",modalities:{input:["text"],output:["text"]},open_weights:true,limit:{context:128e3,output:8192}},"mistral/devstral-medium-latest":{id:"mistral/devstral-medium-latest",name:"Devstral 2 (latest)",description:"Mistral coding agent model for repository tasks and software engineering workflows",family:"devstral",attachment:false,reasoning:false,tool_call:true,temperature:true,knowledge:"2025-12",release_date:"2025-12-02",last_updated:"2025-12-02",modalities:{input:["text"],output:["text"]},open_weights:true,limit:{context:262144,output:262144},weights:[{label:"Hugging Face",url:"https://huggingface.co/mistralai/Devstral-2-123B-Instruct-2512"}]},"mistral/voxtral-mini-3b-2507":{id:"mistral/voxtral-mini-3b-2507",name:"Voxtral Mini 3B 2507",description:"Open audio-language model for speech transcription, audio understanding, and voice-driven tool use",family:"voxtral",attachment:true,reasoning:false,tool_call:true,temperature:true,release_date:"2025-07-15",last_updated:"2025-07-15",modalities:{input:["text","audio"],output:["text"]},open_weights:true,limit:{context:32768,output:32768},license:"Apache 2.0",weights:[{label:"Hugging Face",url:"https://huggingface.co/mistralai/Voxtral-Mini-3B-2507"}]},"mistral/devstral-2512":{id:"mistral/devstral-2512",name:"Devstral 2",description:"Mistral's coding-agent model for repository work, terminal tasks, and software fixes",family:"devstral",attachment:false,reasoning:false,tool_call:true,temperature:true,knowledge:"2025-12",release_date:"2025-12-09",last_updated:"2025-12-09",modalities:{input:["text"],output:["text"]},open_weights:true,limit:{context:262144,output:262144},weights:[{label:"Hugging Face",url:"https://huggingface.co/mistralai/Devstral-2-123B-Instruct-2512"}],benchmarks:[{name:"Artificial Analysis Coding Index",score:23.7,metric:"index",source:"https://openrouter.ai/mistralai/devstral-2512/benchmarks",date:"2026-05-31"},{name:"SciCode",score:33.1,metric:"percent correct",source:"https://openrouter.ai/mistralai/devstral-2512/benchmarks",date:"2026-05-31"},{name:"Terminal-Bench Hard",score:18.9,metric:"success rate",source:"https://openrouter.ai/mistralai/devstral-2512/benchmarks",date:"2026-05-31"}]},"mistral/mistral-medium-2505":{id:"mistral/mistral-medium-2505",name:"Mistral Medium 3",description:"Mistral model for multilingual chat, reasoning, and tool-assisted workflows",family:"mistral-medium",attachment:true,reasoning:false,tool_call:true,temperature:true,knowledge:"2025-05",release_date:"2025-05-07",last_updated:"2025-05-07",modalities:{input:["text","image"],output:["text"]},open_weights:false,limit:{context:131072,output:131072},benchmarks:[{name:"Artificial Analysis Coding Index",score:13.6,metric:"index",source:"https://openrouter.ai/mistralai/mistral-medium-3/benchmarks",date:"2026-05-30"},{name:"SciCode",score:33.1,metric:"percent correct",source:"https://openrouter.ai/mistralai/mistral-medium-3/benchmarks",date:"2026-05-30"},{name:"Terminal-Bench Hard",score:3.8,metric:"success rate",source:"https://openrouter.ai/mistralai/mistral-medium-3/benchmarks",date:"2026-05-30"}]},"mistral/magistral-medium-latest":{id:"mistral/magistral-medium-latest",name:"Magistral Medium (latest)",description:"Mistral reasoning model for transparent analysis, math, and complex decisions",family:"magistral-medium",attachment:false,reasoning:true,tool_call:true,temperature:true,knowledge:"2025-06",release_date:"2025-03-17",last_updated:"2025-03-20",modalities:{input:["text"],output:["text"]},open_weights:false,limit:{context:128e3,output:16384}},"mistral/magistral-small-2506":{id:"mistral/magistral-small-2506",name:"Magistral Small",description:"Open Mistral reasoning model for transparent step-by-step problem solving",family:"magistral",attachment:false,reasoning:true,tool_call:true,temperature:true,release_date:"2025-06-10",last_updated:"2025-06-10",modalities:{input:["text"],output:["text"]},open_weights:true,limit:{context:131072,output:8192},license:"Apache 2.0",weights:[{label:"Hugging Face",url:"https://huggingface.co/mistralai/Magistral-Small-2506"}]},"mistral/mistral-small-3-1-24b-instruct-2503":{id:"mistral/mistral-small-3-1-24b-instruct-2503",name:"Mistral Small 3.1 24B",description:"Efficient multimodal model for instruction following, coding, reasoning, and function calling",family:"mistral-small",attachment:true,reasoning:false,tool_call:true,structured_output:true,temperature:true,knowledge:"2024-06",release_date:"2025-03-17",last_updated:"2025-03-17",modalities:{input:["text","image"],output:["text"]},open_weights:true,limit:{context:128e3,output:16384},weights:[{label:"Hugging Face",url:"https://huggingface.co/mistralai/Mistral-Small-3.1-24B-Instruct-2503"}]},"mistral/ministral-3-14b-instruct-2512":{id:"mistral/ministral-3-14b-instruct-2512",name:"Ministral 3 14B",description:"Open vision-language model for efficient local deployment, instruction following, and tool use",family:"ministral",attachment:true,reasoning:false,tool_call:true,structured_output:true,temperature:true,release_date:"2025-12-02",last_updated:"2025-12-02",modalities:{input:["text","image"],output:["text"]},open_weights:true,limit:{context:262144,output:262144},license:"Apache 2.0",weights:[{label:"Hugging Face",url:"https://huggingface.co/mistralai/Ministral-3-14B-Instruct-2512"}]},"mistral/pixtral-12b":{id:"mistral/pixtral-12b",name:"Pixtral 12B",description:"Mistral vision-language model for image understanding and multimodal chat",family:"pixtral",attachment:true,reasoning:false,tool_call:true,temperature:true,knowledge:"2024-09",release_date:"2024-09-01",last_updated:"2024-09-01",modalities:{input:["text","image"],output:["text"]},open_weights:true,limit:{context:128e3,output:128e3},weights:[{label:"Hugging Face",url:"https://huggingface.co/mistralai/Pixtral-12B-2409"}]},"mistral/codestral-22b-v0.1":{id:"mistral/codestral-22b-v0.1",name:"Codestral-22B-v0.1",description:"Open Mistral code model for fill-in-the-middle and 80+ programming languages",family:"codestral",attachment:false,reasoning:false,tool_call:false,temperature:true,release_date:"2024-05-29",last_updated:"2024-05-29",modalities:{input:["text"],output:["text"]},open_weights:true,limit:{context:32768,output:8192},license:"Mistral AI Non-Production License",weights:[{label:"Hugging Face",url:"https://huggingface.co/mistralai/Codestral-22B-v0.1"}]},"mistral/mistral-embed":{id:"mistral/mistral-embed",name:"Mistral Embed",description:"Embedding model for semantic search, retrieval, clustering, and ranking pipelines",family:"mistral-embed",attachment:false,reasoning:false,tool_call:false,temperature:false,release_date:"2023-12-11",last_updated:"2023-12-11",modalities:{input:["text"],output:["text"]},open_weights:false,limit:{context:8e3,output:3072}},"mistral/magistral-small-2509":{id:"mistral/magistral-small-2509",name:"Magistral Small 1.2",description:"Open multimodal reasoning model for transparent analysis of text and images",family:"magistral",attachment:true,reasoning:true,tool_call:true,temperature:true,release_date:"2025-09-18",last_updated:"2025-09-18",modalities:{input:["text","image"],output:["text"]},open_weights:true,limit:{context:131072,output:131072},license:"Apache 2.0",weights:[{label:"Hugging Face",url:"https://huggingface.co/mistralai/Magistral-Small-2509"}]},"mistral/devstral-small-2":{id:"mistral/devstral-small-2",name:"Devstral Small 2",description:"Compact multimodal coding model for repository exploration, file editing, and software agents",family:"devstral",attachment:true,reasoning:false,tool_call:true,temperature:true,knowledge:"2025-12",release_date:"2025-12-09",last_updated:"2025-12-09",modalities:{input:["text","image"],output:["text"]},open_weights:true,limit:{context:262144,output:262144},license:"Apache-2.0",weights:[{label:"Hugging Face",url:"https://huggingface.co/mistralai/Devstral-Small-2-24B-Instruct-2512"}]},"mistral/mistral-small-2603":{id:"mistral/mistral-small-2603",name:"Mistral Small 4",description:"Fast Mistral production model for chat, extraction, and cost-sensitive agents",family:"mistral-small",attachment:true,reasoning:true,tool_call:true,temperature:true,knowledge:"2025-06",release_date:"2026-03-16",last_updated:"2026-03-16",modalities:{input:["text","image"],output:["text"]},open_weights:true,limit:{context:256e3,output:256e3},weights:[{label:"Hugging Face",url:"https://huggingface.co/mistralai/Mistral-Small-4-119B-2603"}],benchmarks:[{name:"Artificial Analysis Coding Index",score:24.3,metric:"index",source:"https://openrouter.ai/mistralai/mistral-small-2603/benchmarks",date:"2026-06-01"},{name:"SciCode",score:38,metric:"percent correct",source:"https://openrouter.ai/mistralai/mistral-small-2603/benchmarks",date:"2026-06-01"},{name:"Terminal-Bench Hard",score:17.4,metric:"success rate",source:"https://openrouter.ai/mistralai/mistral-small-2603/benchmarks",date:"2026-06-01"}]},"mistral/ministral-3-3b-instruct-2512":{id:"mistral/ministral-3-3b-instruct-2512",name:"Ministral 3 3B",description:"Compact open vision-language model for edge deployment, instruction following, and tool use",family:"ministral",attachment:true,reasoning:false,tool_call:true,structured_output:true,temperature:true,release_date:"2025-12-02",last_updated:"2025-12-02",modalities:{input:["text","image"],output:["text"]},open_weights:true,limit:{context:262144,output:262144},license:"Apache 2.0",weights:[{label:"Hugging Face",url:"https://huggingface.co/mistralai/Ministral-3-3B-Instruct-2512"}]},"mistral/devstral-medium-2507":{id:"mistral/devstral-medium-2507",name:"Devstral Medium",description:"Mistral coding agent model for repository tasks and software engineering workflows",family:"devstral",attachment:false,reasoning:false,tool_call:true,temperature:true,knowledge:"2025-05",release_date:"2025-07-10",last_updated:"2025-07-10",modalities:{input:["text"],output:["text"]},open_weights:false,limit:{context:128e3,output:128e3},benchmarks:[{name:"SWE-Bench Verified",score:61.6,metric:"resolved",source:"https://mistral.ai/news/devstral-2507",date:"2025-07-10"}]},"mistral/voxtral-small-24b-2507":{id:"mistral/voxtral-small-24b-2507",name:"Voxtral Small 24B 2507",description:"Open audio-language model for speech transcription, audio understanding, and voice-driven tool use",family:"voxtral",attachment:true,reasoning:false,tool_call:true,temperature:true,release_date:"2025-07-15",last_updated:"2025-07-15",modalities:{input:["text","audio"],output:["text"]},open_weights:true,limit:{context:32768,output:32768},license:"Apache 2.0",weights:[{label:"Hugging Face",url:"https://huggingface.co/mistralai/Voxtral-Small-24B-2507"}]},"mistral/pixtral-large-2502":{id:"mistral/pixtral-large-2502",name:"Pixtral Large (25.02)",description:"Mistral vision-language model for image understanding and multimodal chat",family:"pixtral",attachment:true,reasoning:false,tool_call:true,temperature:true,release_date:"2025-04-08",last_updated:"2025-04-08",modalities:{input:["text","image"],output:["text"]},open_weights:false,limit:{context:128e3,output:8192}},"mistral/ministral-3-8b-instruct-2512":{id:"mistral/ministral-3-8b-instruct-2512",name:"Ministral 3 8B",description:"Compact open vision-language model for edge deployment, instruction following, and tool use",family:"ministral",attachment:true,reasoning:false,tool_call:true,structured_output:true,temperature:true,release_date:"2025-12-02",last_updated:"2025-12-02",modalities:{input:["text","image"],output:["text"]},open_weights:true,limit:{context:262144,output:262144},license:"Apache 2.0",weights:[{label:"Hugging Face",url:"https://huggingface.co/mistralai/Ministral-3-8B-Instruct-2512"}]},"mistral/mistral-large-2512":{id:"mistral/mistral-large-2512",name:"Mistral Large 3",description:"Mistral's largest general model for enterprise agents, coding, and multilingual reasoning",family:"mistral-large",attachment:true,reasoning:false,tool_call:true,temperature:true,knowledge:"2024-11",release_date:"2025-12-02",last_updated:"2025-12-02",modalities:{input:["text","image"],output:["text"]},open_weights:true,limit:{context:262144,output:262144},weights:[{label:"Hugging Face",url:"https://huggingface.co/mistralai/Mistral-Large-3-675B-Instruct-2512"}],benchmarks:[{name:"Artificial Analysis Coding Index",score:22.7,metric:"index",source:"https://openrouter.ai/mistralai/mistral-large-2512/benchmarks",date:"2026-06-04"},{name:"SciCode",score:36.2,metric:"percent correct",source:"https://openrouter.ai/mistralai/mistral-large-2512/benchmarks",date:"2026-06-04"},{name:"Terminal-Bench Hard",score:15.9,metric:"success rate",source:"https://openrouter.ai/mistralai/mistral-large-2512/benchmarks",date:"2026-06-04"}]},"mistral/devstral-small-2507":{id:"mistral/devstral-small-2507",name:"Devstral Small",description:"Mistral coding agent model for repository tasks and software engineering workflows",family:"devstral",attachment:false,reasoning:false,tool_call:true,temperature:true,knowledge:"2025-05",release_date:"2025-07-10",last_updated:"2025-07-10",modalities:{input:["text"],output:["text"]},open_weights:true,limit:{context:128e3,output:128e3},weights:[{label:"Hugging Face",url:"https://huggingface.co/mistralai/Devstral-Small-2507"}],benchmarks:[{name:"SWE-Bench Verified",score:53.6,metric:"resolved",source:"https://mistral.ai/news/devstral-2507",date:"2025-07-10"}]},"mistral/pixtral-large-latest":{id:"mistral/pixtral-large-latest",name:"Pixtral Large (latest)",description:"Mistral's larger vision model for document-heavy image understanding and chat",family:"pixtral",attachment:true,reasoning:false,tool_call:true,temperature:true,knowledge:"2024-11",release_date:"2024-11-01",last_updated:"2024-11-04",modalities:{input:["text","image"],output:["text"]},open_weights:true,limit:{context:128e3,output:128e3},weights:[{label:"Hugging Face",url:"https://huggingface.co/mistralai/Pixtral-Large-Instruct-2411"}]},"mistral/voxtral-small-latest":{id:"mistral/voxtral-small-latest",name:"Voxtral Small (latest)",description:"Instruct model with native audio input for speech understanding and tool use",family:"voxtral",attachment:true,reasoning:false,tool_call:true,temperature:true,release_date:"2025-07-15",last_updated:"2025-07-15",modalities:{input:["text","audio"],output:["text"]},open_weights:true,limit:{context:32e3,output:32e3}},"mistral/mistral-small-2506":{id:"mistral/mistral-small-2506",name:"Mistral Small 3.2",description:"Efficient Mistral model for fast chat, extraction, and production assistants",family:"mistral-small",attachment:false,reasoning:false,tool_call:true,temperature:true,knowledge:"2025-03",release_date:"2025-06-20",last_updated:"2025-06-20",modalities:{input:["text","image"],output:["text"]},open_weights:true,limit:{context:128e3,output:16384},weights:[{label:"Hugging Face",url:"https://huggingface.co/mistralai/Mistral-Small-3.2-24B-Instruct-2506"}]},"mistral/ministral-14b":{id:"mistral/ministral-14b",name:"Ministral 14B",description:"Compact multimodal Mistral model for local assistants, edge agents, and efficient tool use",family:"ministral",attachment:true,reasoning:false,tool_call:true,temperature:true,release_date:"2025-12-02",last_updated:"2025-12-02",modalities:{input:["text","image"],output:["text"]},open_weights:true,limit:{context:262144,output:262144},license:"Apache-2.0",weights:[{label:"Hugging Face",url:"https://huggingface.co/mistralai/Ministral-3-14B-Instruct-2512"}]},"mistral/mistral-medium-2604":{id:"mistral/mistral-medium-2604",name:"Mistral Medium 3.5",description:"Balanced Mistral model for enterprise assistants, multilingual work, and tools",family:"mistral-medium",attachment:true,reasoning:true,tool_call:true,structured_output:true,temperature:true,release_date:"2026-04-29",last_updated:"2026-04-29",modalities:{input:["text","image"],output:["text"]},open_weights:true,limit:{context:262144,output:262144},weights:[{label:"Hugging Face",url:"https://huggingface.co/mistralai/Mistral-Medium-3.5-128B"}],benchmarks:[{name:"SWE-Bench Verified",score:77.6,metric:"resolved",source:"https://huggingface.co/mistralai/Mistral-Medium-3.5-128B"},{name:"\u03C4\xB3-Telecom",score:91.4,metric:"accuracy",variant:"public preview",source:"https://mistral.ai/news/vibe-remote-agents-mistral-medium-3-5/",date:"2026-05-22"}]},"mistral/ministral-8b-instruct-2410":{id:"mistral/ministral-8b-instruct-2410",name:"Ministral 8B Instruct",description:"Efficient open Mistral edge model for on-device chat and function calling",family:"ministral",attachment:false,reasoning:false,tool_call:true,temperature:true,release_date:"2024-10-16",last_updated:"2024-10-16",modalities:{input:["text"],output:["text"]},open_weights:true,limit:{context:131072,output:8192},license:"Mistral Research License",weights:[{label:"Hugging Face",url:"https://huggingface.co/mistralai/Ministral-8B-Instruct-2410"}]},"mistral/mistral-medium-latest":{id:"mistral/mistral-medium-latest",name:"Mistral Medium (latest)",description:"Balanced Mistral model for enterprise assistants, multilingual work, and tools",family:"mistral-medium",attachment:true,reasoning:true,tool_call:true,structured_output:true,temperature:true,release_date:"2026-04-29",last_updated:"2026-04-29",modalities:{input:["text","image"],output:["text"]},open_weights:true,limit:{context:262144,output:262144},weights:[{label:"Hugging Face",url:"https://huggingface.co/mistralai/Mistral-Medium-3.5-128B"}],benchmarks:[{name:"SWE-Bench Verified",score:77.6,metric:"resolved",source:"https://huggingface.co/mistralai/Mistral-Medium-3.5-128B"}]},"vivgrid/viv-fast":{id:"vivgrid/viv-fast",name:"Viv Fast",description:"Fast coding model",attachment:true,reasoning:true,tool_call:true,structured_output:true,temperature:false,knowledge:"2026-09",release_date:"2026-09-21",last_updated:"2026-09-21",modalities:{input:["text","image"],output:["text"]},open_weights:false,limit:{context:1e6,output:256e3},links:[{label:"Model docs",url:"https://docs.vivgrid.com/models/viv-fast"}]},"openai/gpt-5.4":{id:"openai/gpt-5.4",name:"GPT-5.4",description:"Agent-ready GPT for coding and computer-use workflows at a lower cost",family:"gpt",attachment:true,reasoning:true,tool_call:true,structured_output:true,temperature:true,knowledge:"2025-08-31",release_date:"2026-03-05",last_updated:"2026-03-05",modalities:{input:["text","image","pdf"],output:["text"]},open_weights:false,limit:{context:105e4,input:922e3,output:128e3},benchmarks:[{name:"SWE-Bench Pro",score:59.1,metric:"resolve rate",dataset:"public",source:"https://labs.scale.com/leaderboard/swe_bench_pro_public"},{name:"SWE-Atlas Codebase QnA",score:40.8,metric:"score",harness:"Codex",source:"https://labs.scale.com/leaderboard/sweatlas-qna"},{name:"SWE-Atlas Codebase QnA",score:36.3,metric:"score",harness:"Mini-SWE-Agent",source:"https://labs.scale.com/leaderboard/sweatlas-qna"},{name:"SWE-Atlas Refactoring",score:44.29,metric:"score",harness:"Codex",source:"https://labs.scale.com/leaderboard/sweatlas-refactoring"},{name:"SWE-Atlas Test Writing",score:44.36,metric:"score",harness:"Codex CLI",source:"https://labs.scale.com/leaderboard/sweatlas-tw"},{name:"SWE-Atlas Test Writing",score:40,metric:"score",harness:"Mini-SWE-Agent",source:"https://labs.scale.com/leaderboard/sweatlas-tw"},{name:"Artificial Analysis Coding Agent Index",score:53.6,metric:"average pass@1",harness:"Codex",variant:"medium",source:"https://artificialanalysis.ai/agents/coding-agents"},{name:"SWE-Atlas Codebase QnA",score:72.4,metric:"pass@1",harness:"Codex",variant:"medium",source:"https://artificialanalysis.ai/agents/coding-agents"},{name:"SWE-Bench Pro",score:18.4,metric:"pass@1",harness:"Codex",variant:"medium",dataset:"hard-aa",source:"https://artificialanalysis.ai/agents/coding-agents"},{name:"Terminal-Bench",score:69.8,metric:"pass@1",harness:"Codex",variant:"medium",version:"2.1",source:"https://artificialanalysis.ai/agents/coding-agents"},{name:"Artificial Analysis Coding Agent Index",score:52.2,metric:"average pass@1",harness:"Cursor CLI",variant:"medium",source:"https://artificialanalysis.ai/agents/coding-agents"},{name:"SWE-Atlas Codebase QnA",score:72.9,metric:"pass@1",harness:"Cursor CLI",variant:"medium",source:"https://artificialanalysis.ai/agents/coding-agents"},{name:"SWE-Bench Pro",score:18.9,metric:"pass@1",harness:"Cursor CLI",variant:"medium",dataset:"hard-aa",source:"https://artificialanalysis.ai/agents/coding-agents"},{name:"Terminal-Bench",score:64.7,metric:"pass@1",harness:"Cursor CLI",variant:"medium",version:"2.1",source:"https://artificialanalysis.ai/agents/coding-agents"},{name:"Terminal-Bench",score:75.1,metric:"success rate",version:"2.0",source:"https://openai.com/index/introducing-gpt-5-5/",date:"2026-04-23"},{name:"GPQA Diamond",score:92.8,metric:"accuracy",source:"https://openai.com/index/introducing-gpt-5-5/",date:"2026-04-23"},{name:"Humanity's Last Exam",score:39.8,metric:"accuracy",variant:"no tools",source:"https://openai.com/index/introducing-gpt-5-5/",date:"2026-04-23"},{name:"Humanity's Last Exam",score:52.1,metric:"accuracy",variant:"with tools",source:"https://openai.com/index/introducing-gpt-5-5/",date:"2026-04-23"},{name:"OSWorld-Verified",score:75,metric:"success rate",source:"https://openai.com/index/introducing-gpt-5-5/",date:"2026-04-23"},{name:"BrowseComp",score:82.7,metric:"accuracy",source:"https://openai.com/index/introducing-gpt-5-5/",date:"2026-04-23"},{name:"GDPval",score:83,metric:"wins or ties",source:"https://openai.com/index/introducing-gpt-5-5/",date:"2026-04-23"},{name:"ARC-AGI-2",score:73.3,metric:"accuracy",variant:"Verified",source:"https://openai.com/index/introducing-gpt-5-5/",date:"2026-04-23"},{name:"FrontierMath",score:47.6,metric:"accuracy",dataset:"Tier 1-3",source:"https://openai.com/index/introducing-gpt-5-5/",date:"2026-04-23"},{name:"FrontierMath",score:27.1,metric:"accuracy",dataset:"Tier 4",source:"https://openai.com/index/introducing-gpt-5-5/",date:"2026-04-23"},{name:"MMMU Pro",score:81.2,metric:"accuracy",variant:"no tools",source:"https://openai.com/index/introducing-gpt-5-5/",date:"2026-04-23"}]},"openai/gpt-5.4-pro":{id:"openai/gpt-5.4-pro",name:"GPT-5.4 Pro",description:"More exact GPT-5.4 tier for demanding professional reasoning and agent tasks",family:"gpt-pro",attachment:true,reasoning:true,tool_call:true,structured_output:false,temperature:false,knowledge:"2025-08-31",release_date:"2026-03-05",last_updated:"2026-03-05",modalities:{input:["text","image"],output:["text"]},open_weights:false,limit:{context:105e4,input:922e3,output:128e3},benchmarks:[{name:"GPQA Diamond",score:94.4,metric:"accuracy",source:"https://openai.com/index/introducing-gpt-5-5/",date:"2026-04-23"},{name:"Humanity's Last Exam",score:42.7,metric:"accuracy",variant:"no tools",source:"https://openai.com/index/introducing-gpt-5-5/",date:"2026-04-23"},{name:"Humanity's Last Exam",score:58.7,metric:"accuracy",variant:"with tools",source:"https://openai.com/index/introducing-gpt-5-5/",date:"2026-04-23"},{name:"BrowseComp",score:89.3,metric:"accuracy",source:"https://openai.com/index/introducing-gpt-5-5/",date:"2026-04-23"},{name:"GDPval",score:82,metric:"wins or ties",source:"https://openai.com/index/introducing-gpt-5-5/",date:"2026-04-23"},{name:"FrontierMath",score:50,metric:"accuracy",dataset:"Tier 1-3",source:"https://openai.com/index/introducing-gpt-5-5/",date:"2026-04-23"},{name:"FrontierMath",score:38,metric:"accuracy",dataset:"Tier 4",source:"https://openai.com/index/introducing-gpt-5-5/",date:"2026-04-23"},{name:"ARC-AGI-1",score:94.5,metric:"accuracy",variant:"Verified",source:"https://openai.com/index/introducing-gpt-5-5/",date:"2026-04-23"},{name:"ARC-AGI-2",score:83.3,metric:"accuracy",variant:"Verified",source:"https://openai.com/index/introducing-gpt-5-5/",date:"2026-04-23"},{name:"FinanceAgent",score:61.5,metric:"accuracy",version:"1.1",source:"https://openai.com/index/introducing-gpt-5-5/",date:"2026-04-23"},{name:"GeneBench",score:25.6,metric:"accuracy",source:"https://openai.com/index/introducing-gpt-5-5/",date:"2026-04-23"}]},"openai/gpt-oss-safeguard-120b":{id:"openai/gpt-oss-safeguard-120b",name:"GPT OSS Safeguard 120B",description:"Safety model for policy screening, moderation, and risk-aware routing workflows",family:"gpt-oss",attachment:false,reasoning:true,tool_call:true,structured_output:true,temperature:true,release_date:"2025-10-29",last_updated:"2025-10-29",modalities:{input:["text"],output:["text"]},open_weights:true,limit:{context:131072,output:32768},weights:[{label:"Hugging Face",url:"https://huggingface.co/openai/gpt-oss-safeguard-120b"}]},"openai/gpt-3.5-turbo":{id:"openai/gpt-3.5-turbo",name:"GPT-3.5-turbo",description:"Compact GPT model for low-latency assistance and high-volume workloads",family:"gpt",attachment:false,reasoning:false,tool_call:false,structured_output:false,temperature:true,knowledge:"2021-09-01",release_date:"2023-03-01",last_updated:"2023-11-06",modalities:{input:["text"],output:["text"]},open_weights:false,limit:{context:16385,output:4096},benchmarks:[{name:"Artificial Analysis Coding Index",score:10.7,metric:"index",source:"https://openrouter.ai/openai/gpt-3.5-turbo/benchmarks",date:"2026-03-11"}]},"openai/gpt-5.5-pro":{id:"openai/gpt-5.5-pro",name:"GPT-5.5 Pro",description:"Highest-accuracy GPT-5.5 tier for slower, precision-heavy reasoning and coding",family:"gpt-pro",attachment:true,reasoning:true,tool_call:true,structured_output:true,temperature:false,knowledge:"2025-12-01",release_date:"2026-04-23",last_updated:"2026-04-23",modalities:{input:["text","image","pdf"],output:["text"]},open_weights:false,limit:{context:105e4,input:922e3,output:128e3},benchmarks:[{name:"BrowseComp",score:90.1,metric:"accuracy",source:"https://openai.com/index/introducing-gpt-5-5/",date:"2026-04-23"},{name:"Humanity's Last Exam",score:43.1,metric:"accuracy",variant:"no tools",source:"https://openai.com/index/introducing-gpt-5-5/",date:"2026-04-23"},{name:"Humanity's Last Exam",score:57.2,metric:"accuracy",variant:"with tools",source:"https://openai.com/index/introducing-gpt-5-5/",date:"2026-04-23"},{name:"FrontierMath",score:52.4,metric:"accuracy",dataset:"Tier 1-3",source:"https://openai.com/index/introducing-gpt-5-5/",date:"2026-04-23"},{name:"FrontierMath",score:39.6,metric:"accuracy",dataset:"Tier 4",source:"https://openai.com/index/introducing-gpt-5-5/",date:"2026-04-23"},{name:"GDPval",score:82.3,metric:"wins or ties",source:"https://openai.com/index/introducing-gpt-5-5/",date:"2026-04-23"},{name:"GeneBench",score:33.2,metric:"accuracy",source:"https://openai.com/index/introducing-gpt-5-5/",date:"2026-04-23"}]},"openai/gpt-5.4-nano":{id:"openai/gpt-5.4-nano",name:"GPT-5.4 nano",description:"Cheapest GPT-5.4 lane for simple routing, extraction, and bulk automation",family:"gpt-nano",attachment:true,reasoning:true,tool_call:true,structured_output:true,temperature:true,knowledge:"2025-08-31",release_date:"2026-03-17",last_updated:"2026-03-17",modalities:{input:["text","image"],output:["text"]},open_weights:false,limit:{context:4e5,input:272e3,output:128e3},benchmarks:[{name:"SWE-Bench Pro",score:52.4,metric:"resolve rate",variant:"reasoning effort xhigh",source:"https://openai.com/index/introducing-gpt-5-4-mini-and-nano/",date:"2026-03-17"},{name:"Terminal-Bench",score:46.3,metric:"accuracy",variant:"reasoning effort xhigh",version:"2.0",source:"https://openai.com/index/introducing-gpt-5-4-mini-and-nano/",date:"2026-03-17"},{name:"MCP Atlas",score:56.1,metric:"score",variant:"reasoning effort xhigh",source:"https://openai.com/index/introducing-gpt-5-4-mini-and-nano/",date:"2026-03-17"},{name:"Toolathlon",score:35.5,metric:"score",variant:"reasoning effort xhigh",source:"https://openai.com/index/introducing-gpt-5-4-mini-and-nano/",date:"2026-03-17"},{name:"\u03C4\xB2-Bench Telecom",score:92.5,metric:"accuracy",variant:"reasoning effort xhigh",source:"https://openai.com/index/introducing-gpt-5-4-mini-and-nano/",date:"2026-03-17"},{name:"GPQA Diamond",score:82.8,metric:"accuracy",variant:"reasoning effort xhigh",source:"https://openai.com/index/introducing-gpt-5-4-mini-and-nano/",date:"2026-03-17"},{name:"Humanity's Last Exam",score:37.7,metric:"accuracy",variant:"with tools",source:"https://openai.com/index/introducing-gpt-5-4-mini-and-nano/",date:"2026-03-17"},{name:"Humanity's Last Exam",score:24.3,metric:"accuracy",variant:"without tools",source:"https://openai.com/index/introducing-gpt-5-4-mini-and-nano/",date:"2026-03-17"},{name:"OSWorld-Verified",score:39,metric:"success rate",variant:"reasoning effort xhigh",source:"https://openai.com/index/introducing-gpt-5-4-mini-and-nano/",date:"2026-03-17"},{name:"MMMU Pro",score:69.5,metric:"accuracy",variant:"with Python",source:"https://openai.com/index/introducing-gpt-5-4-mini-and-nano/",date:"2026-03-17"},{name:"MMMU Pro",score:66.1,metric:"accuracy",variant:"without tools",source:"https://openai.com/index/introducing-gpt-5-4-mini-and-nano/",date:"2026-03-17"},{name:"OmniDocBench",score:.2419,metric:"overall edit distance",variant:"reasoning effort none",version:"1.5",source:"https://openai.com/index/introducing-gpt-5-4-mini-and-nano/",date:"2026-03-17"},{name:"OpenAI MRCR",score:44.2,metric:"accuracy",variant:"8-needle, 64K-128K",version:"v2",source:"https://openai.com/index/introducing-gpt-5-4-mini-and-nano/",date:"2026-03-17"},{name:"OpenAI MRCR",score:33.1,metric:"accuracy",variant:"8-needle, 128K-256K",version:"v2",source:"https://openai.com/index/introducing-gpt-5-4-mini-and-nano/",date:"2026-03-17"},{name:"Graphwalks",score:73.4,metric:"accuracy",variant:"BFS, 0-128K",source:"https://openai.com/index/introducing-gpt-5-4-mini-and-nano/",date:"2026-03-17"},{name:"Graphwalks",score:50.8,metric:"accuracy",variant:"parents, 0-128K",source:"https://openai.com/index/introducing-gpt-5-4-mini-and-nano/",date:"2026-03-17"}]},"openai/gpt-realtime-2.1":{id:"openai/gpt-realtime-2.1",name:"GPT-Realtime-2.1",description:"Realtime speech-to-speech model with configurable reasoning, tool use, and robust voice-agent behavior",family:"gpt",attachment:true,reasoning:true,tool_call:true,structured_output:false,temperature:false,knowledge:"2024-09-30",release_date:"2026-07-06",last_updated:"2026-07-06",modalities:{input:["text","audio","image"],output:["text","audio"]},open_weights:false,limit:{context:128e3,input:96e3,output:32e3}},"openai/gpt-4o-2024-05-13":{id:"openai/gpt-4o-2024-05-13",name:"GPT-4o (2024-05-13)",description:"GPT model for general reasoning, writing, coding, and tool-assisted tasks",family:"gpt",attachment:true,reasoning:false,tool_call:true,structured_output:true,temperature:true,knowledge:"2023-09",release_date:"2024-05-13",last_updated:"2024-05-13",modalities:{input:["text","image"],output:["text"]},open_weights:false,limit:{context:128e3,output:4096},benchmarks:[{name:"Artificial Analysis Coding Index",score:24.2,metric:"index",source:"https://openrouter.ai/openai/gpt-4o-2024-05-13/benchmarks",date:"2026-03-11"},{name:"SciCode",score:30.9,metric:"percent correct",source:"https://openrouter.ai/openai/gpt-4o-2024-05-13/benchmarks",date:"2026-03-11"}]},"openai/gpt-5.2-codex":{id:"openai/gpt-5.2-codex",name:"GPT-5.2 Codex",description:"Code-specialist GPT for repository edits, reviews, and long-running software agents",family:"gpt-codex",attachment:true,reasoning:true,tool_call:true,structured_output:true,temperature:false,knowledge:"2025-08-31",release_date:"2025-12-11",last_updated:"2025-12-11",modalities:{input:["text","image","pdf"],output:["text"]},open_weights:false,limit:{context:4e5,input:272e3,output:128e3},benchmarks:[{name:"SWE-Bench Pro",score:41.04,metric:"resolve rate",dataset:"public",source:"https://labs.scale.com/leaderboard/swe_bench_pro_public"}]},"openai/gpt-5.1-codex":{id:"openai/gpt-5.1-codex",name:"GPT-5.1 Codex",description:"Codex GPT for repository edits, code review, and practical software agents",family:"gpt-codex",attachment:true,reasoning:true,tool_call:true,structured_output:true,temperature:false,knowledge:"2024-09-30",release_date:"2025-11-13",last_updated:"2025-11-13",modalities:{input:["text","image"],output:["text"]},open_weights:false,limit:{context:4e5,input:272e3,output:128e3}},"openai/gpt-4o":{id:"openai/gpt-4o",name:"GPT-4o",description:"Omni-era GPT for multimodal chat, practical coding, and general assistants",family:"gpt",attachment:true,reasoning:false,tool_call:true,structured_output:true,temperature:true,knowledge:"2023-09",release_date:"2024-05-13",last_updated:"2024-08-06",modalities:{input:["text","image","pdf"],output:["text"]},open_weights:false,limit:{context:128e3,output:16384},benchmarks:[{name:"Aider Polyglot",score:23.1,metric:"percent correct",source:"https://aider.chat/docs/leaderboards/",date:"2024-12-30"}]},"openai/whisper-large-v3":{id:"openai/whisper-large-v3",name:"Whisper 3 Large",description:"Open Whisper checkpoint for robust multilingual transcription and captioning",family:"whisper",attachment:false,reasoning:false,tool_call:false,release_date:"2024-10-01",last_updated:"2024-10-01",modalities:{input:["audio"],output:["text"]},open_weights:true,limit:{context:448,output:4096}},"openai/gpt-5-codex":{id:"openai/gpt-5-codex",name:"GPT-5-Codex",description:"Coding-optimized GPT model for repository edits, reviews, and agentic software work",family:"gpt-codex",attachment:false,reasoning:true,tool_call:true,structured_output:true,temperature:false,knowledge:"2024-09-30",release_date:"2025-09-15",last_updated:"2025-09-15",modalities:{input:["text","image"],output:["text"]},open_weights:false,limit:{context:4e5,input:272e3,output:128e3},benchmarks:[{name:"Artificial Analysis Coding Index",score:38.9,metric:"index",source:"https://openrouter.ai/openai/gpt-5-codex/benchmarks",date:"2026-06-01"},{name:"SciCode",score:40.9,metric:"percent correct",source:"https://openrouter.ai/openai/gpt-5-codex/benchmarks",date:"2026-06-01"},{name:"Terminal-Bench Hard",score:37.9,metric:"success rate",source:"https://openrouter.ai/openai/gpt-5-codex/benchmarks",date:"2026-06-01"}]},"openai/gpt-5-mini":{id:"openai/gpt-5-mini",name:"GPT-5 Mini",description:"Small GPT-5 for responsive agents, coding help, and everyday automation",family:"gpt-mini",attachment:true,reasoning:true,tool_call:true,structured_output:true,temperature:false,knowledge:"2024-05-30",release_date:"2025-08-07",last_updated:"2025-08-07",modalities:{input:["text","image"],output:["text"]},open_weights:false,limit:{context:4e5,input:272e3,output:128e3}},"openai/gpt-image-2":{id:"openai/gpt-image-2",name:"GPT-Image-2",description:"Image model for prompt-driven generation, editing, and visual design workflows",family:"gpt-image",attachment:true,reasoning:false,tool_call:false,temperature:false,release_date:"2026-04-21",last_updated:"2026-04-21",modalities:{input:["text","image"],output:["image"]},open_weights:false,limit:{context:0,output:0}},"openai/gpt-6-astra-fast":{id:"openai/gpt-6-astra-fast",name:"GPT-6 Astra (Fast)",description:"Fast variant of GPT-6 Astra for low-latency assistance and high-volume workloads.",family:"gpt-astra",attachment:true,reasoning:true,tool_call:true,structured_output:true,temperature:false,release_date:"2026-09-04",last_updated:"2026-09-04",modalities:{input:["text","image","pdf"],output:["text"]},open_weights:false,limit:{context:105e4,input:922e3,output:128e3}},"openai/gpt-5.2-pro":{id:"openai/gpt-5.2-pro",name:"GPT-5.2 Pro",description:"Higher-accuracy GPT-5.2 variant for tougher reasoning and review workflows",family:"gpt-pro",attachment:true,reasoning:true,tool_call:true,structured_output:false,temperature:false,knowledge:"2025-08-31",release_date:"2025-12-11",last_updated:"2025-12-11",modalities:{input:["text","image"],output:["text"]},open_weights:false,limit:{context:4e5,input:272e3,output:128e3}},"openai/o4-mini":{id:"openai/o4-mini",name:"o4-mini",description:"Fast o-series model for compact reasoning, coding, and tool use",family:"o-mini",attachment:true,reasoning:true,tool_call:true,structured_output:true,temperature:false,knowledge:"2024-05",release_date:"2025-04-16",last_updated:"2025-04-16",modalities:{input:["text","image"],output:["text"]},open_weights:false,limit:{context:2e5,output:1e5},benchmarks:[{name:"Aider Polyglot",score:72,metric:"percent correct",source:"https://aider.chat/docs/leaderboards/",date:"2025-04-16"}]},"openai/o3-mini":{id:"openai/o3-mini",name:"o3-mini",description:"Smaller o-series reasoner for economical coding, math, and planning tasks",family:"o-mini",attachment:false,reasoning:true,tool_call:true,structured_output:true,temperature:false,knowledge:"2024-05",release_date:"2024-12-20",last_updated:"2025-01-29",modalities:{input:["text"],output:["text"]},open_weights:false,limit:{context:2e5,output:1e5},benchmarks:[{name:"Aider Polyglot",score:60.4,metric:"percent correct",source:"https://aider.chat/docs/leaderboards/",date:"2025-01-31"}]},"openai/gpt-4":{id:"openai/gpt-4",name:"GPT-4",description:"GPT model for general reasoning, writing, coding, and tool-assisted tasks",family:"gpt",attachment:true,reasoning:false,tool_call:true,structured_output:false,temperature:true,knowledge:"2023-11",release_date:"2023-11-06",last_updated:"2024-04-09",modalities:{input:["text"],output:["text"]},open_weights:false,limit:{context:8192,output:8192},benchmarks:[{name:"Artificial Analysis Coding Index",score:13.1,metric:"index",source:"https://openrouter.ai/openai/gpt-4/benchmarks",date:"2026-03-11"}]},"openai/gpt-5.3-codex":{id:"openai/gpt-5.3-codex",name:"GPT-5.3 Codex",description:"Coding-optimized GPT model for repository edits, reviews, and agentic software work",family:"gpt-codex",attachment:true,reasoning:true,tool_call:true,structured_output:true,temperature:true,knowledge:"2025-08-31",release_date:"2026-02-05",last_updated:"2026-02-05",modalities:{input:["text","image","pdf"],output:["text"]},open_weights:false,limit:{context:4e5,input:272e3,output:128e3},benchmarks:[{name:"SWE-Atlas Codebase QnA",score:32.6,metric:"score",harness:"Codex",source:"https://labs.scale.com/leaderboard/sweatlas-qna"},{name:"SWE-Atlas Refactoring",score:42.38,metric:"score",harness:"Codex",source:"https://labs.scale.com/leaderboard/sweatlas-refactoring"},{name:"SWE-Atlas Test Writing",score:38.98,metric:"score",harness:"Codex",source:"https://labs.scale.com/leaderboard/sweatlas-tw"}]},"openai/gpt-4.1-nano":{id:"openai/gpt-4.1-nano",name:"GPT-4.1 nano",description:"Tiny GPT-4.1 option for classification, routing, and very high-volume tasks",family:"gpt-nano",attachment:true,reasoning:false,tool_call:true,structured_output:true,temperature:true,knowledge:"2024-04",release_date:"2025-04-14",last_updated:"2025-04-14",modalities:{input:["text","image"],output:["text"]},open_weights:false,limit:{context:1047576,output:32768},benchmarks:[{name:"Aider Polyglot",score:8.9,metric:"percent correct",source:"https://aider.chat/docs/leaderboards/",date:"2025-04-14"}]},"openai/o3-deep-research":{id:"openai/o3-deep-research",name:"o3-deep-research",description:"Research model for long-horizon investigation, synthesis, and analytical reports",family:"o",attachment:true,reasoning:true,tool_call:true,temperature:false,knowledge:"2024-05",release_date:"2024-06-26",last_updated:"2024-06-26",modalities:{input:["text","image"],output:["text"]},open_weights:false,limit:{context:2e5,output:1e5}},"openai/gpt-5-nano":{id:"openai/gpt-5-nano",name:"GPT-5 Nano",description:"Tiny GPT-5 lane for routing, extraction, classification, and bulk jobs",family:"gpt-nano",attachment:true,reasoning:true,tool_call:true,structured_output:true,temperature:false,knowledge:"2024-05-30",release_date:"2025-08-07",last_updated:"2025-08-07",modalities:{input:["text","image"],output:["text"]},open_weights:false,limit:{context:4e5,input:272e3,output:128e3}},"openai/gpt-5.2-chat-latest":{id:"openai/gpt-5.2-chat-latest",name:"GPT-5.2 Chat",description:"Chat-tuned GPT model for conversational assistance, writing, and tool workflows",family:"gpt-codex",attachment:true,reasoning:true,tool_call:true,structured_output:true,temperature:false,knowledge:"2025-08-31",release_date:"2025-12-11",last_updated:"2025-12-11",modalities:{input:["text","image"],output:["text"]},open_weights:false,limit:{context:128e3,output:16384}},"openai/gpt-5.1-chat-latest":{id:"openai/gpt-5.1-chat-latest",name:"GPT-5.1 Chat",description:"Chat-tuned GPT-5.1 for polished assistants, writing, and product conversations",family:"gpt-codex",attachment:true,reasoning:true,tool_call:true,structured_output:true,temperature:false,knowledge:"2024-09-30",release_date:"2025-11-13",last_updated:"2025-11-13",modalities:{input:["text","image"],output:["text"]},open_weights:false,limit:{context:128e3,output:16384}},"openai/gpt-image-2.5-flare":{id:"openai/gpt-image-2.5-flare",name:"GPT Image 2.5 Flare",description:"Image model for prompt-driven generation, editing, and visual design workflows",family:"gpt-image",attachment:true,reasoning:false,tool_call:false,temperature:false,release_date:"2026-09-08",last_updated:"2026-09-08",modalities:{input:["text","image"],output:["image"]},open_weights:false,limit:{context:0,output:0}},"openai/o1":{id:"openai/o1",name:"o1",description:"O-series reasoning model for hard analysis, math, coding, and planning",family:"o",attachment:true,reasoning:true,tool_call:true,structured_output:true,temperature:false,knowledge:"2023-09",release_date:"2024-12-05",last_updated:"2024-12-05",modalities:{input:["text","image","pdf"],output:["text"]},open_weights:false,limit:{context:2e5,output:1e5},benchmarks:[{name:"Aider Polyglot",score:61.7,metric:"percent correct",source:"https://aider.chat/docs/leaderboards/",date:"2024-12-21"}]},"openai/gpt-5.5-instant":{id:"openai/gpt-5.5-instant",name:"GPT-5.5 Instant",description:"Compact GPT model for low-latency assistance and high-volume workloads",attachment:true,reasoning:true,tool_call:true,structured_output:true,temperature:true,knowledge:"2025-12-01",release_date:"2026-05-05",last_updated:"2026-05-28",modalities:{input:["text","image","pdf"],output:["text"]},open_weights:false,limit:{context:4e5,input:272e3,output:128e3}},"openai/gpt-5-pro":{id:"openai/gpt-5-pro",name:"GPT-5 Pro",description:"Higher-accuracy GPT-5 tier for tough analysis, coding reviews, and planning",family:"gpt-pro",attachment:true,reasoning:true,tool_call:true,structured_output:true,temperature:false,knowledge:"2024-09-30",release_date:"2025-10-06",last_updated:"2025-10-06",modalities:{input:["text","image"],output:["text"]},open_weights:false,limit:{context:4e5,input:272e3,output:272e3}},"openai/gpt-5.3-codex-spark":{id:"openai/gpt-5.3-codex-spark",name:"GPT-5.3 Codex Spark",description:"Coding-optimized GPT model for repository edits, reviews, and agentic software work",family:"gpt-codex-spark",attachment:true,reasoning:true,tool_call:true,structured_output:true,temperature:false,knowledge:"2025-08-31",release_date:"2026-02-05",last_updated:"2026-02-05",modalities:{input:["text","image","pdf"],output:["text"]},open_weights:false,limit:{context:128e3,input:1e5,output:32e3}},"openai/gpt-5-chat-latest":{id:"openai/gpt-5-chat-latest",name:"GPT-5 Chat (latest)",description:"Chat-tuned GPT model for conversational assistance, writing, and tool workflows",family:"gpt-codex",attachment:true,reasoning:true,tool_call:false,structured_output:true,temperature:false,knowledge:"2024-09-30",release_date:"2025-08-07",last_updated:"2025-08-07",modalities:{input:["text","image"],output:["text"]},open_weights:false,limit:{context:4e5,input:272e3,output:128e3}},"openai/gpt-4o-2024-08-06":{id:"openai/gpt-4o-2024-08-06",name:"GPT-4o (2024-08-06)",description:"GPT model for general reasoning, writing, coding, and tool-assisted tasks",family:"gpt",attachment:true,reasoning:false,tool_call:true,structured_output:true,temperature:true,knowledge:"2023-09",release_date:"2024-08-06",last_updated:"2024-08-06",modalities:{input:["text","image"],output:["text"]},open_weights:false,limit:{context:128e3,output:16384},benchmarks:[{name:"Aider Polyglot",score:23.1,metric:"percent correct",source:"https://aider.chat/docs/leaderboards/",date:"2024-12-30"},{name:"Artificial Analysis Coding Index",score:16.6,metric:"index",source:"https://openrouter.ai/openai/gpt-4o-2024-08-06/benchmarks",date:"2026-03-11"},{name:"SciCode",score:33.1,metric:"percent correct",source:"https://openrouter.ai/openai/gpt-4o-2024-08-06/benchmarks",date:"2026-03-11"},{name:"Terminal-Bench Hard",score:8.3,metric:"success rate",source:"https://openrouter.ai/openai/gpt-4o-2024-08-06/benchmarks",date:"2026-03-11"}]},"openai/gpt-6-astra":{id:"openai/gpt-6-astra",name:"GPT-6 Astra",description:"GPT-6 Astra is OpenAI's most capable model for complex reasoning, coding, computer use, research, and document creation.",family:"gpt-astra",attachment:true,reasoning:true,tool_call:true,structured_output:true,temperature:false,knowledge:"2026-04-30",release_date:"2026-09-04",last_updated:"2026-09-04",modalities:{input:["text","image","pdf"],output:["text"]},open_weights:false,limit:{context:105e4,input:922e3,output:128e3},benchmarks:[{name:"Agents' Last Exam",score:59.3,source:"https://openai.com/index/gpt-6-astra/",date:"2026-09-03"},{name:"OSWorld",score:72.6,metric:"partial score",dataset:"V2-Offline (v2026.08.08)",version:"2.0",source:"https://openai.com/index/gpt-6-astra/",date:"2026-09-03"},{name:"ScreenSpot-Pro",score:92.7,metric:"accuracy",variant:"no tools",source:"https://openai.com/index/gpt-6-astra/",date:"2026-09-03"},{name:"AutomationBench",score:41.4,metric:"success rate",source:"https://openai.com/index/gpt-6-astra/",date:"2026-09-03"},{name:"BenchCAD",score:95.9,metric:"geometric overlap",variant:"with tools",source:"https://openai.com/index/gpt-6-astra/",date:"2026-09-03"},{name:"BrowseComp",score:91.5,metric:"accuracy",source:"https://openai.com/index/gpt-6-astra/",date:"2026-09-03"},{name:"Terminal-Bench",score:57.9,metric:"success rate",version:"4.0",source:"https://openai.com/index/gpt-6-astra/",date:"2026-09-03"},{name:"DeepSWE",score:74.1,metric:"resolve rate",version:"1.1",source:"https://openai.com/index/gpt-6-astra/",date:"2026-09-03"},{name:"FrontierCode",score:64.5,metric:"score",dataset:"Extended",version:"1.1",source:"https://openai.com/index/gpt-6-astra/",date:"2026-09-03"},{name:"Terminal-Bench Science",score:64.6,metric:"success rate",version:"0.1",source:"https://openai.com/index/gpt-6-astra/",date:"2026-09-03"},{name:"FrontierMath",score:97.6,metric:"accuracy",dataset:"Tier 4",version:"v2",source:"https://openai.com/index/gpt-6-astra/",date:"2026-09-03"},{name:"GPQA Diamond",score:96,metric:"accuracy",source:"https://openai.com/index/gpt-6-astra/",date:"2026-09-03"},{name:"Humanity's Last Exam",score:57.2,metric:"accuracy",variant:"with tools",source:"https://openai.com/index/gpt-6-astra/",date:"2026-09-03"},{name:"ExploitBench",score:100,metric:"success rate",variant:"without production safeguards",source:"https://openai.com/index/gpt-6-astra/",date:"2026-09-03"},{name:"SRE-Bench",score:88,metric:"success rate",variant:"single attempt",source:"https://openai.com/index/gpt-6-astra/",date:"2026-09-03"},{name:"ARC-AGI-3",score:99.9,metric:"RHAE",harness:"Responses API",source:"https://openai.com/index/gpt-6-astra/",date:"2026-09-03"},{name:"Artificial Analysis Intelligence Index",score:61,metric:"index score",variant:"max",version:"4.1.1",source:"https://artificialanalysis.ai/articles/benchmarking-gpt-6-astra",date:"2026-09-03"},{name:"Artificial Analysis Coding Agent Index",score:67,metric:"index score",harness:"Codex",variant:"max",version:"1.4",source:"https://artificialanalysis.ai/articles/benchmarking-gpt-6-astra",date:"2026-09-03"}]},"openai/gpt-5.1":{id:"openai/gpt-5.1",name:"GPT-5.1",description:"Sharper GPT-5 generation for coding, product work, and tool-assisted tasks",family:"gpt",attachment:true,reasoning:true,tool_call:true,structured_output:true,temperature:true,knowledge:"2024-09-30",release_date:"2025-11-13",last_updated:"2025-11-13",modalities:{input:["text","image"],output:["text"]},open_weights:false,limit:{context:4e5,input:272e3,output:128e3}},"openai/gpt-4o-mini":{id:"openai/gpt-4o-mini",name:"GPT-4o mini",description:"Small omni GPT for cheap multimodal assistance and production-scale traffic",family:"gpt-mini",attachment:true,reasoning:false,tool_call:true,structured_output:true,temperature:true,knowledge:"2023-09",release_date:"2024-07-18",last_updated:"2024-07-18",modalities:{input:["text","image","pdf"],output:["text"]},open_weights:false,limit:{context:128e3,output:16384},benchmarks:[{name:"Aider Polyglot",score:3.6,metric:"percent correct",source:"https://aider.chat/docs/leaderboards/",date:"2024-12-21"},{name:"SciCode",score:22.9,metric:"percent correct",source:"https://openrouter.ai/openai/gpt-4o-mini/benchmarks",date:"2026-03-11"}]},"openai/o3-pro":{id:"openai/o3-pro",name:"o3-pro",description:"High-effort o3 tier for difficult technical reasoning and careful answers",family:"o-pro",attachment:true,reasoning:true,tool_call:true,structured_output:true,temperature:false,knowledge:"2024-05",release_date:"2025-06-10",last_updated:"2025-06-10",modalities:{input:["text","image"],output:["text"]},open_weights:false,limit:{context:2e5,output:1e5},benchmarks:[{name:"Aider Polyglot",score:84.9,metric:"percent correct",source:"https://aider.chat/docs/leaderboards/",date:"2025-06-28"}]},"openai/gpt-oss-20b":{id:"openai/gpt-oss-20b",name:"GPT OSS 20B",description:"Open GPT reasoning model for self-hosted agents and controllable deployments",family:"gpt-oss",attachment:false,reasoning:true,tool_call:true,structured_output:true,temperature:true,release_date:"2025-08-05",last_updated:"2025-08-05",modalities:{input:["text"],output:["text"]},open_weights:true,limit:{context:131072,output:32768},weights:[{label:"Hugging Face",url:"https://huggingface.co/openai/gpt-oss-20b"}]},"openai/gpt-oss-safeguard-20b":{id:"openai/gpt-oss-safeguard-20b",name:"GPT OSS Safeguard 20B",description:"Safety model for policy screening, moderation, and risk-aware routing workflows",family:"gpt-oss",attachment:false,reasoning:true,tool_call:true,structured_output:true,temperature:true,release_date:"2025-10-29",last_updated:"2025-10-29",modalities:{input:["text"],output:["text"]},open_weights:true,limit:{context:131072,output:131072},weights:[{label:"Hugging Face",url:"https://huggingface.co/openai/gpt-oss-safeguard-20b"}]},"openai/gpt-image-2.5-sunburst":{id:"openai/gpt-image-2.5-sunburst",name:"GPT Image 2.5 Sunburst",description:"Image model for prompt-driven generation, editing, and visual design workflows",family:"gpt-image",attachment:true,reasoning:false,tool_call:false,temperature:false,release_date:"2026-09-08",last_updated:"2026-09-08",modalities:{input:["text","image"],output:["image"]},open_weights:false,limit:{context:0,output:0}},"openai/gpt-image-1":{id:"openai/gpt-image-1",name:"GPT-Image-1",description:"OpenAI image model for production generation, edits, and brand-safe visual workflows",family:"gpt-image",attachment:true,reasoning:false,tool_call:false,temperature:false,release_date:"2025-04-24",last_updated:"2025-04-24",modalities:{input:["text","image"],output:["image"]},open_weights:false,limit:{context:0,output:0}},"openai/gpt-5.4-mini":{id:"openai/gpt-5.4-mini",name:"GPT-5.4 mini",description:"Strong small GPT for coding subagents, quick tool use, and high-volume work",family:"gpt-mini",attachment:true,reasoning:true,tool_call:true,structured_output:true,temperature:true,knowledge:"2025-08-31",release_date:"2026-03-17",last_updated:"2026-03-17",modalities:{input:["text","image"],output:["text"]},open_weights:false,limit:{context:4e5,input:272e3,output:128e3},benchmarks:[{name:"SWE-Bench Pro",score:54.4,metric:"resolve rate",variant:"reasoning effort xhigh",source:"https://openai.com/index/introducing-gpt-5-4-mini-and-nano/",date:"2026-03-17"},{name:"Terminal-Bench",score:60,metric:"accuracy",variant:"reasoning effort xhigh",version:"2.0",source:"https://openai.com/index/introducing-gpt-5-4-mini-and-nano/",date:"2026-03-17"},{name:"MCP Atlas",score:57.7,metric:"score",variant:"reasoning effort xhigh",source:"https://openai.com/index/introducing-gpt-5-4-mini-and-nano/",date:"2026-03-17"},{name:"Toolathlon",score:42.9,metric:"score",variant:"reasoning effort xhigh",source:"https://openai.com/index/introducing-gpt-5-4-mini-and-nano/",date:"2026-03-17"},{name:"\u03C4\xB2-Bench Telecom",score:93.4,metric:"accuracy",variant:"reasoning effort xhigh",source:"https://openai.com/index/introducing-gpt-5-4-mini-and-nano/",date:"2026-03-17"},{name:"GPQA Diamond",score:88,metric:"accuracy",variant:"reasoning effort xhigh",source:"https://openai.com/index/introducing-gpt-5-4-mini-and-nano/",date:"2026-03-17"},{name:"Humanity's Last Exam",score:41.5,metric:"accuracy",variant:"with tools",source:"https://openai.com/index/introducing-gpt-5-4-mini-and-nano/",date:"2026-03-17"},{name:"Humanity's Last Exam",score:28.2,metric:"accuracy",variant:"without tools",source:"https://openai.com/index/introducing-gpt-5-4-mini-and-nano/",date:"2026-03-17"},{name:"OSWorld-Verified",score:72.1,metric:"success rate",variant:"reasoning effort xhigh",source:"https://openai.com/index/introducing-gpt-5-4-mini-and-nano/",date:"2026-03-17"},{name:"MMMU Pro",score:78,metric:"accuracy",variant:"with Python",source:"https://openai.com/index/introducing-gpt-5-4-mini-and-nano/",date:"2026-03-17"},{name:"MMMU Pro",score:76.6,metric:"accuracy",variant:"without tools",source:"https://openai.com/index/introducing-gpt-5-4-mini-and-nano/",date:"2026-03-17"},{name:"OmniDocBench",score:.1263,metric:"overall edit distance",variant:"reasoning effort none",version:"1.5",source:"https://openai.com/index/introducing-gpt-5-4-mini-and-nano/",date:"2026-03-17"},{name:"OpenAI MRCR",score:47.7,metric:"accuracy",variant:"8-needle, 64K-128K",version:"v2",source:"https://openai.com/index/introducing-gpt-5-4-mini-and-nano/",date:"2026-03-17"},{name:"OpenAI MRCR",score:33.6,metric:"accuracy",variant:"8-needle, 128K-256K",version:"v2",source:"https://openai.com/index/introducing-gpt-5-4-mini-and-nano/",date:"2026-03-17"},{name:"Graphwalks",score:76.3,metric:"accuracy",variant:"BFS, 0-128K",source:"https://openai.com/index/introducing-gpt-5-4-mini-and-nano/",date:"2026-03-17"},{name:"Graphwalks",score:71.5,metric:"accuracy",variant:"parents, 0-128K",source:"https://openai.com/index/introducing-gpt-5-4-mini-and-nano/",date:"2026-03-17"}]},"openai/gpt-5.6-luna":{id:"openai/gpt-5.6-luna",name:"GPT-5.6 Luna",description:"Cost-efficient GPT-5.6 model for fast, high-volume workloads",family:"gpt-luna",attachment:true,reasoning:true,tool_call:true,structured_output:true,temperature:false,knowledge:"2026-02-16",release_date:"2026-07-09",last_updated:"2026-07-09",modalities:{input:["text","image","pdf"],output:["text"]},open_weights:false,limit:{context:105e4,input:922e3,output:128e3},benchmarks:[{name:"SWE-Bench Pro",score:62.7,metric:"resolve rate",source:"https://openai.com/index/gpt-5-6/",date:"2026-07-09"},{name:"Terminal-Bench",score:84.7,metric:"success rate",version:"2.1",source:"https://openai.com/index/gpt-5-6/",date:"2026-07-09"},{name:"DeepSWE",score:67.2,metric:"resolve rate",version:"1.1",source:"https://openai.com/index/gpt-5-6/",date:"2026-07-09"},{name:"GPQA Diamond",score:92.3,metric:"accuracy",source:"https://openai.com/index/gpt-5-6/",date:"2026-07-09"},{name:"FrontierMath",score:78.6,metric:"accuracy",dataset:"Tier 1-3",version:"v2",source:"https://openai.com/index/gpt-5-6/",date:"2026-07-09"},{name:"BrowseComp",score:83.3,metric:"accuracy",source:"https://openai.com/index/gpt-5-6/",date:"2026-07-09"},{name:"OSWorld",score:45.6,metric:"success rate",version:"2.0",source:"https://openai.com/index/gpt-5-6/",date:"2026-07-09"},{name:"MMMU Pro",score:78.4,metric:"accuracy",variant:"no tools",source:"https://openai.com/index/gpt-5-6/",date:"2026-07-09"},{name:"Agents' Last Exam",score:50.3,source:"https://openai.com/index/gpt-5-6/",date:"2026-07-09"},{name:"Toolathlon",score:53.4,metric:"success rate",source:"https://openai.com/index/gpt-5-6/",date:"2026-07-09"},{name:"Artificial Analysis Intelligence Index",score:51.2,metric:"index score",variant:"max",version:"4.1",source:"https://artificialanalysis.ai/articles/gpt-5-6-has-landed",date:"2026-07-09"},{name:"Artificial Analysis Coding Agent Index",score:74.6,metric:"index score",harness:"Codex",variant:"max",version:"1.1",source:"https://artificialanalysis.ai/articles/gpt-5-6-has-landed",date:"2026-07-09"}]},"openai/gpt-5.1-codex-max":{id:"openai/gpt-5.1-codex-max",name:"GPT-5.1 Codex Max",description:"Coding-optimized GPT model for repository edits, reviews, and agentic software work",family:"gpt-codex",attachment:true,reasoning:true,tool_call:true,structured_output:true,temperature:false,knowledge:"2024-09-30",release_date:"2025-11-13",last_updated:"2025-11-13",modalities:{input:["text","image"],output:["text"]},open_weights:false,limit:{context:4e5,input:272e3,output:128e3}},"openai/gpt-5.2":{id:"openai/gpt-5.2",name:"GPT-5.2",description:"Reliable GPT generation for broad coding, writing, and tool-assisted product work",family:"gpt",attachment:true,reasoning:true,tool_call:true,structured_output:true,temperature:true,knowledge:"2025-08-31",release_date:"2025-12-11",last_updated:"2025-12-11",modalities:{input:["text","image"],output:["text"]},open_weights:false,limit:{context:4e5,input:272e3,output:128e3},benchmarks:[{name:"SWE-Bench Pro",score:29.94,metric:"resolve rate",dataset:"public",source:"https://labs.scale.com/leaderboard/swe_bench_pro_public"}]},"openai/gpt-5.5":{id:"openai/gpt-5.5",name:"GPT-5.5",description:"Default frontier GPT for coding, computer use, research, and knowledge work",family:"gpt",attachment:true,reasoning:true,tool_call:true,structured_output:true,temperature:false,knowledge:"2025-12-01",release_date:"2026-04-23",last_updated:"2026-04-23",modalities:{input:["text","image","pdf"],output:["text"]},open_weights:false,limit:{context:105e4,input:922e3,output:128e3},benchmarks:[{name:"SWE-Bench Pro",score:58.6,metric:"resolve rate",source:"https://www.anthropic.com/news/claude-opus-4-8",date:"2026-05-28"},{name:"Terminal-Bench",score:78.2,metric:"success rate",harness:"Terminus-2",version:"2.1",source:"https://www.anthropic.com/news/claude-opus-4-8",date:"2026-05-28"},{name:"SWE-Atlas Codebase QnA",score:45.43,metric:"score",harness:"Codex",source:"https://labs.scale.com/leaderboard/sweatlas-qna"},{name:"SWE-Atlas Refactoring",score:44.79,metric:"score",harness:"Codex",source:"https://labs.scale.com/leaderboard/sweatlas-refactoring"},{name:"SWE-Atlas Test Writing",score:42.59,metric:"score",harness:"Codex",source:"https://labs.scale.com/leaderboard/sweatlas-tw"},{name:"Artificial Analysis Coding Agent Index",score:65.3,metric:"average pass@1",harness:"Codex",variant:"xhigh",source:"https://artificialanalysis.ai/agents/coding-agents"},{name:"SWE-Atlas Codebase QnA",score:80.8,metric:"pass@1",harness:"Codex",variant:"xhigh",source:"https://artificialanalysis.ai/agents/coding-agents"},{name:"SWE-Bench Pro",score:30.9,metric:"pass@1",harness:"Codex",variant:"xhigh",dataset:"hard-aa",source:"https://artificialanalysis.ai/agents/coding-agents"},{name:"Terminal-Bench",score:84.1,metric:"pass@1",harness:"Codex",variant:"xhigh",version:"2.1",source:"https://artificialanalysis.ai/agents/coding-agents"},{name:"Artificial Analysis Coding Agent Index",score:60.4,metric:"average pass@1",harness:"Codex",variant:"medium",source:"https://artificialanalysis.ai/agents/coding-agents"},{name:"SWE-Atlas Codebase QnA",score:79.1,metric:"pass@1",harness:"Codex",variant:"medium",source:"https://artificialanalysis.ai/agents/coding-agents"},{name:"SWE-Bench Pro",score:26.2,metric:"pass@1",harness:"Codex",variant:"medium",dataset:"hard-aa",source:"https://artificialanalysis.ai/agents/coding-agents"},{name:"Terminal-Bench",score:75.8,metric:"pass@1",harness:"Codex",variant:"medium",version:"2.1",source:"https://artificialanalysis.ai/agents/coding-agents"},{name:"Artificial Analysis Coding Agent Index",score:57.8,metric:"average pass@1",harness:"Cursor CLI",variant:"medium",source:"https://artificialanalysis.ai/agents/coding-agents"},{name:"SWE-Atlas Codebase QnA",score:75,metric:"pass@1",harness:"Cursor CLI",variant:"medium",source:"https://artificialanalysis.ai/agents/coding-agents"},{name:"SWE-Bench Pro",score:24.9,metric:"pass@1",harness:"Cursor CLI",variant:"medium",dataset:"hard-aa",source:"https://artificialanalysis.ai/agents/coding-agents"},{name:"Terminal-Bench",score:73.4,metric:"pass@1",harness:"Cursor CLI",variant:"medium",version:"2.1",source:"https://artificialanalysis.ai/agents/coding-agents"},{name:"Terminal-Bench",score:82.7,metric:"success rate",version:"2.0",source:"https://openai.com/index/introducing-gpt-5-5/",date:"2026-04-23"},{name:"GPQA Diamond",score:93.6,metric:"accuracy",source:"https://openai.com/index/introducing-gpt-5-5/",date:"2026-04-23"},{name:"Humanity's Last Exam",score:41.4,metric:"accuracy",variant:"no tools",source:"https://openai.com/index/introducing-gpt-5-5/",date:"2026-04-23"},{name:"Humanity's Last Exam",score:52.2,metric:"accuracy",variant:"with tools",source:"https://openai.com/index/introducing-gpt-5-5/",date:"2026-04-23"},{name:"OSWorld-Verified",score:78.7,metric:"success rate",source:"https://openai.com/index/introducing-gpt-5-5/",date:"2026-04-23"},{name:"BrowseComp",score:84.4,metric:"accuracy",source:"https://openai.com/index/introducing-gpt-5-5/",date:"2026-04-23"},{name:"MMMU Pro",score:81.2,metric:"accuracy",variant:"no tools",source:"https://openai.com/index/introducing-gpt-5-5/",date:"2026-04-23"},{name:"ARC-AGI-2",score:85,metric:"accuracy",variant:"Verified",source:"https://openai.com/index/introducing-gpt-5-5/",date:"2026-04-23"},{name:"FrontierMath",score:51.7,metric:"accuracy",dataset:"Tier 1-3",source:"https://openai.com/index/introducing-gpt-5-5/",date:"2026-04-23"},{name:"FrontierMath",score:35.4,metric:"accuracy",dataset:"Tier 4",source:"https://openai.com/index/introducing-gpt-5-5/",date:"2026-04-23"},{name:"GDPval",score:84.9,metric:"wins or ties",source:"https://openai.com/index/introducing-gpt-5-5/",date:"2026-04-23"},{name:"MCP Atlas",score:75.3,metric:"success rate",source:"https://openai.com/index/introducing-gpt-5-5/",date:"2026-04-23"},{name:"Toolathlon",score:55.6,metric:"success rate",source:"https://openai.com/index/introducing-gpt-5-5/",date:"2026-04-23"},{name:"\u03C4\xB2-Bench Telecom",score:98,metric:"success rate",variant:"original prompts",source:"https://openai.com/index/introducing-gpt-5-5/",date:"2026-04-23"}]},"openai/o4-mini-deep-research":{id:"openai/o4-mini-deep-research",name:"o4-mini-deep-research",description:"Research model for long-horizon investigation, synthesis, and analytical reports",family:"o-mini",attachment:true,reasoning:true,tool_call:true,temperature:false,knowledge:"2024-05",release_date:"2024-06-26",last_updated:"2024-06-26",modalities:{input:["text","image"],output:["text"]},open_weights:false,limit:{context:2e5,output:1e5}},"openai/gpt-4.1":{id:"openai/gpt-4.1",name:"GPT-4.1",description:"Long-lived GPT workhorse for coding, instruction following, and production apps",family:"gpt",attachment:true,reasoning:false,tool_call:true,structured_output:true,temperature:true,knowledge:"2024-04",release_date:"2025-04-14",last_updated:"2025-04-14",modalities:{input:["text","image","pdf"],output:["text"]},open_weights:false,limit:{context:1047576,output:32768},benchmarks:[{name:"Aider Polyglot",score:52.4,metric:"percent correct",source:"https://aider.chat/docs/leaderboards/",date:"2025-04-14"}]},"openai/gpt-4o-2024-11-20":{id:"openai/gpt-4o-2024-11-20",name:"GPT-4o (2024-11-20)",description:"GPT model for general reasoning, writing, coding, and tool-assisted tasks",family:"gpt",attachment:true,reasoning:false,tool_call:true,structured_output:true,temperature:true,knowledge:"2023-09",release_date:"2024-11-20",last_updated:"2024-11-20",modalities:{input:["text","image"],output:["text"]},open_weights:false,limit:{context:128e3,output:16384},benchmarks:[{name:"Aider Polyglot",score:18.2,metric:"percent correct",source:"https://aider.chat/docs/leaderboards/",date:"2024-12-30"},{name:"Artificial Analysis Coding Index",score:16.7,metric:"index",source:"https://openrouter.ai/openai/gpt-4o-2024-11-20/benchmarks",date:"2026-03-11"},{name:"SciCode",score:33.3,metric:"percent correct",source:"https://openrouter.ai/openai/gpt-4o-2024-11-20/benchmarks",date:"2026-03-11"},{name:"Terminal-Bench Hard",score:8.3,metric:"success rate",source:"https://openrouter.ai/openai/gpt-4o-2024-11-20/benchmarks",date:"2026-03-11"}]},"openai/whisper-large-v3-turbo":{id:"openai/whisper-large-v3-turbo",name:"Whisper Large v3 Turbo",description:"Speech transcription model for accurate audio-to-text and captioning workflows",family:"whisper",attachment:false,reasoning:false,tool_call:false,release_date:"2024-10-01",last_updated:"2024-10-01",modalities:{input:["audio"],output:["text"]},open_weights:true,limit:{context:448,output:448}},"openai/gpt-4.1-mini":{id:"openai/gpt-4.1-mini",name:"GPT-4.1 mini",description:"Affordable GPT-4.1 lane for fast coding help and structured extraction",family:"gpt-mini",attachment:true,reasoning:false,tool_call:true,structured_output:true,temperature:true,knowledge:"2024-04",release_date:"2025-04-14",last_updated:"2025-04-14",modalities:{input:["text","image","pdf"],output:["text"]},open_weights:false,limit:{context:1047576,output:32768},benchmarks:[{name:"Aider Polyglot",score:32.4,metric:"percent correct",source:"https://aider.chat/docs/leaderboards/",date:"2025-04-14"}]},"openai/gpt-6-luna":{id:"openai/gpt-6-luna",name:"GPT-6 Luna",description:"OpenAI's most efficient model for focused, high-volume tasks",family:"gpt-luna",attachment:true,reasoning:true,tool_call:true,structured_output:true,temperature:false,knowledge:"2026-05-18",release_date:"2026-09-22",last_updated:"2026-09-22",modalities:{input:["text","image","pdf"],output:["text"]},open_weights:false,limit:{context:105e4,input:922e3,output:128e3},benchmarks:[{name:"DeepSWE",score:66.6,metric:"score",variant:"max effort",version:"1.1",source:"https://openai.com/index/introducing-gpt-6-sol-and-luna/",date:"2026-09-22"}]},"openai/gpt-5.3-chat-latest":{id:"openai/gpt-5.3-chat-latest",name:"GPT-5.3 Chat (latest)",description:"Chat-tuned GPT model for conversational assistance, writing, and tool workflows",family:"gpt",attachment:true,reasoning:false,tool_call:true,structured_output:true,temperature:true,knowledge:"2025-08-31",release_date:"2026-03-03",last_updated:"2026-03-03",modalities:{input:["text","image"],output:["text"]},open_weights:false,limit:{context:128e3,output:16384}},"openai/gpt-image-1.5":{id:"openai/gpt-image-1.5",name:"GPT-Image-1.5",description:"Image model for prompt-driven generation, editing, and visual design workflows",family:"gpt-image",attachment:true,reasoning:false,tool_call:false,temperature:false,release_date:"2025-11-25",last_updated:"2025-11-25",modalities:{input:["text","image"],output:["text","image"]},open_weights:false,limit:{context:0,output:0}},"openai/gpt-5.6-terra":{id:"openai/gpt-5.6-terra",name:"GPT-5.6 Terra",description:"Balanced GPT-5.6 model for capable, cost-efficient everyday work",family:"gpt-terra",attachment:true,reasoning:true,tool_call:true,structured_output:true,temperature:false,knowledge:"2026-02-16",release_date:"2026-07-09",last_updated:"2026-07-09",modalities:{input:["text","image","pdf"],output:["text"]},open_weights:false,limit:{context:105e4,input:922e3,output:128e3},benchmarks:[{name:"SWE-Bench Pro",score:63.4,metric:"resolve rate",source:"https://openai.com/index/gpt-5-6/",date:"2026-07-09"},{name:"Terminal-Bench",score:87.4,metric:"success rate",version:"2.1",source:"https://openai.com/index/gpt-5-6/",date:"2026-07-09"},{name:"DeepSWE",score:69.6,metric:"resolve rate",version:"1.1",source:"https://openai.com/index/gpt-5-6/",date:"2026-07-09"},{name:"GPQA Diamond",score:92.9,metric:"accuracy",source:"https://openai.com/index/gpt-5-6/",date:"2026-07-09"},{name:"FrontierMath",score:84.9,metric:"accuracy",dataset:"Tier 1-3",version:"v2",source:"https://openai.com/index/gpt-5-6/",date:"2026-07-09"},{name:"BrowseComp",score:87.5,metric:"accuracy",source:"https://openai.com/index/gpt-5-6/",date:"2026-07-09"},{name:"OSWorld",score:50.2,metric:"success rate",version:"2.0",source:"https://openai.com/index/gpt-5-6/",date:"2026-07-09"},{name:"MMMU Pro",score:80.7,metric:"accuracy",variant:"no tools",source:"https://openai.com/index/gpt-5-6/",date:"2026-07-09"},{name:"Agents' Last Exam",score:50.4,source:"https://openai.com/index/gpt-5-6/",date:"2026-07-09"},{name:"Toolathlon",score:53.1,metric:"success rate",source:"https://openai.com/index/gpt-5-6/",date:"2026-07-09"},{name:"Artificial Analysis Intelligence Index",score:55,metric:"index score",variant:"max",version:"4.1",source:"https://artificialanalysis.ai/articles/gpt-5-6-has-landed",date:"2026-07-09"},{name:"Artificial Analysis Coding Agent Index",score:77.4,metric:"index score",harness:"Codex",variant:"max",version:"1.1",source:"https://artificialanalysis.ai/articles/gpt-5-6-has-landed",date:"2026-07-09"}]},"openai/gpt-4-turbo":{id:"openai/gpt-4-turbo",name:"GPT-4 Turbo",description:"Compact GPT model for low-latency assistance and high-volume workloads",family:"gpt",attachment:true,reasoning:false,tool_call:true,structured_output:false,temperature:true,knowledge:"2023-12",release_date:"2023-11-06",last_updated:"2024-04-09",modalities:{input:["text","image"],output:["text"]},open_weights:false,limit:{context:128e3,output:4096},benchmarks:[{name:"Artificial Analysis Coding Index",score:21.5,metric:"index",source:"https://openrouter.ai/openai/gpt-4-turbo/benchmarks",date:"2026-03-11"},{name:"SciCode",score:31.9,metric:"percent correct",source:"https://openrouter.ai/openai/gpt-4-turbo/benchmarks",date:"2026-03-11"}]},"openai/gpt-oss-120b":{id:"openai/gpt-oss-120b",name:"GPT OSS 120B",description:"Open GPT reasoning model for self-hosted agents and controllable deployments",family:"gpt-oss",attachment:false,reasoning:true,tool_call:true,structured_output:true,temperature:true,release_date:"2025-08-05",last_updated:"2025-08-05",modalities:{input:["text"],output:["text"]},open_weights:true,limit:{context:131072,output:32768},weights:[{label:"Hugging Face",url:"https://huggingface.co/openai/gpt-oss-120b"}]},"openai/gpt-5.1-codex-mini":{id:"openai/gpt-5.1-codex-mini",name:"GPT-5.1 Codex mini",description:"Coding-optimized GPT model for repository edits, reviews, and agentic software work",family:"gpt-codex",attachment:true,reasoning:true,tool_call:true,structured_output:true,temperature:false,knowledge:"2024-09-30",release_date:"2025-11-13",last_updated:"2025-11-13",modalities:{input:["text","image"],output:["text"]},open_weights:false,limit:{context:4e5,input:272e3,output:128e3}},"openai/o3":{id:"openai/o3",name:"o3",description:"Deliberate o-series reasoner for hard math, coding, and multi-step analysis",family:"o",attachment:true,reasoning:true,tool_call:true,structured_output:true,temperature:false,knowledge:"2024-05",release_date:"2025-04-16",last_updated:"2025-04-16",modalities:{input:["text","image","pdf"],output:["text"]},open_weights:false,limit:{context:2e5,output:1e5},benchmarks:[{name:"Aider Polyglot",score:81.3,metric:"percent correct",source:"https://aider.chat/docs/leaderboards/",date:"2025-06-25"}]},"openai/gpt-5":{id:"openai/gpt-5",name:"GPT-5",description:"Original GPT-5 workhorse for reasoning, coding, writing, and tool workflows",family:"gpt",attachment:true,reasoning:true,tool_call:true,structured_output:true,temperature:false,knowledge:"2024-09-30",release_date:"2025-08-07",last_updated:"2025-08-07",modalities:{input:["text","image"],output:["text"]},open_weights:false,limit:{context:4e5,input:272e3,output:128e3},benchmarks:[{name:"Aider Polyglot",score:88,metric:"percent correct",source:"https://aider.chat/docs/leaderboards/",date:"2025-08-23"},{name:"SWE-Bench Pro",score:41.78,metric:"resolve rate",dataset:"public",source:"https://labs.scale.com/leaderboard/swe_bench_pro_public"}]},"openai/gpt-5.6-sol":{id:"openai/gpt-5.6-sol",name:"GPT-5.6 Sol",description:"Frontier GPT-5.6 model for complex professional work, coding, and agentic workflows",family:"gpt-sol",attachment:true,reasoning:true,tool_call:true,structured_output:true,temperature:false,knowledge:"2026-02-16",release_date:"2026-07-09",last_updated:"2026-07-09",modalities:{input:["text","image","pdf"],output:["text"]},open_weights:false,limit:{context:105e4,input:922e3,output:128e3},benchmarks:[{name:"SWE-Bench Pro",score:64.6,metric:"resolve rate",source:"https://openai.com/index/gpt-5-6/",date:"2026-07-09"},{name:"Terminal-Bench",score:88.8,metric:"success rate",version:"2.1",source:"https://openai.com/index/gpt-5-6/",date:"2026-07-09"},{name:"DeepSWE",score:72.7,metric:"resolve rate",version:"1.1",source:"https://openai.com/index/gpt-5-6/",date:"2026-07-09"},{name:"GPQA Diamond",score:94.6,metric:"accuracy",source:"https://openai.com/index/gpt-5-6/",date:"2026-07-09"},{name:"FrontierMath",score:89,metric:"accuracy",dataset:"Tier 1-3",version:"v2",source:"https://openai.com/index/gpt-5-6/",date:"2026-07-09"},{name:"BrowseComp",score:90.4,metric:"accuracy",source:"https://openai.com/index/gpt-5-6/",date:"2026-07-09"},{name:"OSWorld",score:62.6,metric:"success rate",version:"2.0",source:"https://openai.com/index/gpt-5-6/",date:"2026-07-09"},{name:"MMMU Pro",score:83,metric:"accuracy",variant:"no tools",source:"https://openai.com/index/gpt-5-6/",date:"2026-07-09"},{name:"Agents' Last Exam",score:52.7,source:"https://openai.com/index/gpt-5-6/",date:"2026-07-09"},{name:"Toolathlon",score:58,metric:"success rate",source:"https://openai.com/index/gpt-5-6/",date:"2026-07-09"},{name:"Artificial Analysis Intelligence Index",score:58.9,metric:"index score",variant:"max",version:"4.1",source:"https://artificialanalysis.ai/articles/gpt-5-6-has-landed",date:"2026-07-09"},{name:"Artificial Analysis Coding Agent Index",score:80,metric:"index score",harness:"Codex",variant:"max",version:"1.1",source:"https://artificialanalysis.ai/articles/gpt-5-6-has-landed",date:"2026-07-09"}]},"openai/gpt-realtime-whisper":{id:"openai/gpt-realtime-whisper",name:"GPT Realtime Whisper",description:"Streaming speech-to-text model for low-latency transcript deltas from live audio",family:"whisper",attachment:false,reasoning:false,tool_call:false,temperature:true,release_date:"2026-05-07",last_updated:"2026-05-07",modalities:{input:["audio"],output:["text"]},open_weights:false,limit:{context:16e3,output:2e3}},"openai/gpt-6-sol":{id:"openai/gpt-6-sol",name:"GPT-6 Sol",description:"OpenAI model for complex coding and agentic workflows",family:"gpt-sol",attachment:true,reasoning:true,tool_call:true,structured_output:true,temperature:false,knowledge:"2026-04-20",release_date:"2026-09-22",last_updated:"2026-09-22",modalities:{input:["text","image","pdf"],output:["text"]},open_weights:false,limit:{context:105e4,input:922e3,output:128e3},benchmarks:[{name:"DeepSWE",score:68.8,metric:"score",variant:"max effort",version:"1.1",source:"https://openai.com/index/introducing-gpt-6-sol-and-luna/",date:"2026-09-22"},{name:"AutomationBench",score:33.2,metric:"score",variant:"xhigh effort",version:"1.0.6",source:"https://openai.com/index/introducing-gpt-6-sol-and-luna/",date:"2026-09-22"},{name:"Agents' Last Exam",score:56.4,metric:"score",variant:"max effort",version:"1",source:"https://openai.com/index/introducing-gpt-6-sol-and-luna/",date:"2026-09-22"},{name:"OSWorld",score:60.5,metric:"partial reward",variant:"xhigh effort",dataset:"offline v2026.08.08",version:"2.0",source:"https://openai.com/index/introducing-gpt-6-sol-and-luna/",date:"2026-09-22"}]},"openai/o1-pro":{id:"openai/o1-pro",name:"o1-pro",description:"O-series reasoning model for hard analysis, math, coding, and planning",family:"o-pro",attachment:true,reasoning:true,tool_call:true,structured_output:true,temperature:false,knowledge:"2023-09",release_date:"2025-03-19",last_updated:"2025-03-19",modalities:{input:["text","image"],output:["text"]},open_weights:false,limit:{context:2e5,output:1e5}},"microsoft/mai-code-1-flash":{id:"microsoft/mai-code-1-flash",name:"MAI-Code-1-Flash",description:"Microsoft coding model built for fast, efficient assistance in everyday developer workflows",family:"mai",attachment:false,reasoning:true,tool_call:true,structured_output:true,temperature:true,knowledge:"2025-12",release_date:"2026-06-02",last_updated:"2026-06-08",modalities:{input:["text"],output:["text"]},open_weights:false,limit:{context:256e3,output:128e3},links:[{label:"Model card",url:"https://microsoft.ai/pdf/MAI-Code-1-Flash-Model-Card.PDF",type:"model_card"},{label:"Announcement",url:"https://microsoft.ai/news/introducingmai-code-1-flash/",type:"announcement"}],benchmarks:[{name:"SWE-Bench Pro",score:51.2,metric:"resolve rate",harness:"GitHub Copilot",source:"https://microsoft.ai/news/introducingmai-code-1-flash/",date:"2026-06-02"},{name:"SWE-Bench Verified",score:71.6,metric:"resolved",source:"https://llm-stats.com/benchmarks/swe-bench-verified"},{name:"Terminal-Bench",score:54.8,metric:"success rate",version:"2.0",source:"https://llm-stats.com/benchmarks/terminal-bench-2"},{name:"GPQA Diamond",score:84.6,metric:"accuracy",source:"https://llm-stats.com/benchmarks/gpqa"}]},"microsoft/mai-code-1.1-flash":{id:"microsoft/mai-code-1.1-flash",name:"MAI-Code-1.1-Flash",description:"Microsoft coding model with native vision support, optimized for fast and efficient software development",family:"mai",attachment:true,reasoning:true,tool_call:true,structured_output:true,release_date:"2026-08-11",last_updated:"2026-08-11",modalities:{input:["text","image"],output:["text"]},open_weights:false,limit:{context:256e3,output:128e3},links:[{label:"Announcement",url:"https://microsoft.ai/news/mai-code-1-1-flash-br-better-faster-at-a-quarter-of-the-cost/",type:"announcement"}]},"microsoft/phi-4-mini":{id:"microsoft/phi-4-mini",name:"Phi-4-mini",description:"Compact Microsoft instruction model tuned for efficient coding assistance, reasoning, and low-latency agent tasks",family:"phi",attachment:false,reasoning:false,tool_call:true,temperature:true,knowledge:"2023-10",release_date:"2024-12-11",last_updated:"2024-12-11",modalities:{input:["text"],output:["text"]},open_weights:true,limit:{context:128e3,output:4096},links:[{label:"Weights",url:"https://huggingface.co/microsoft/Phi-4-mini-instruct",type:"weights"}],benchmarks:[{name:"MMLU",score:67.3,metric:"accuracy",source:"https://huggingface.co/microsoft/Phi-4-mini-instruct/resolve/main/README.md"}]}},costs:{"deepinfra/tencent/Hy3":{input:.13,output:.53,cache_read:.033},"deepinfra/meta-llama/Llama-3.3-70B-Instruct-Turbo":{input:.1,output:.32},"deepinfra/meta-llama/Llama-4-Scout-17B-16E-Instruct":{input:.1,output:.3},"deepinfra/meta-llama/Llama-4-Maverick-17B-128E-Instruct-FP8":{input:.2,output:.8},"deepinfra/XiaomiMiMo/MiMo-V2.6-Pro":{input:.435,output:.87,cache_read:.0036},"deepinfra/XiaomiMiMo/MiMo-V2.5-Pro":{input:1,output:3,cache_read:.2},"deepinfra/XiaomiMiMo/MiMo-V2.6-Flash":{input:.14,output:.28,cache_read:.0028},"deepinfra/XiaomiMiMo/MiMo-V2.5":{input:.14,output:.28,cache_read:.0028},"deepinfra/thinkingmachines/Inkling-Small":{input:.45,output:1.2,cache_read:.1},"deepinfra/thinkingmachines/Inkling":{input:.95,output:4.05,cache_read:.16},"deepinfra/google/gemma-3-27b-it":{input:.08,output:.16},"deepinfra/google/gemma-3-12b-it":{input:.05,output:.15},"deepinfra/google/gemma-3-4b-it":{input:.05,output:.1},"deepinfra/google/gemma-4-31B-it":{input:.13,output:.38},"deepinfra/google/gemma-4-26B-A4B-it":{input:.07,output:.34},"deepinfra/google/gemma-4-E4B-it":{input:.02,output:.1},"deepinfra/Qwen/Qwen3-VL-235B-A22B-Instruct":{input:.2,output:.88,cache_read:.11},"deepinfra/Qwen/Qwen3.8-27B":{input:.2,output:2.5,cache_read:.05},"deepinfra/Qwen/Qwen3-Next-80B-A3B-Instruct":{input:.09,output:1.1},"deepinfra/Qwen/Qwen3.7-Max":{input:2.5,output:7.5,cache_read:.5,tiers:[{input:5,output:15,cache_read:1,tier:{type:"context",size:32e3}},{input:6.25,output:18.5,cache_read:1.25,tier:{type:"context",size:128e3}}]},"deepinfra/Qwen/Qwen3.8-Max":{input:1.65,output:4.951,cache_read:.206},"deepinfra/Qwen/Qwen3.5-27B":{input:.26,output:2.6},"deepinfra/Qwen/Qwen3.6-35B-A3B":{input:.1,output:.95},"deepinfra/Qwen/Qwen3-Coder-480B-A35B-Instruct-Turbo":{input:.3,output:1,cache_read:.1},"deepinfra/Qwen/Qwen3-Max":{input:1.2,output:6,cache_read:.24,tiers:[{input:2.4,output:12,cache_read:.48,tier:{type:"context",size:32e3}},{input:3,output:15,cache_read:.6,tier:{type:"context",size:128e3}}]},"deepinfra/Qwen/Qwen3-235B-A22B-Instruct-2507":{input:.09,output:.55},"deepinfra/Qwen/Qwen3.8-Flash":{input:.113,output:.382,cache_read:.0141},"deepinfra/Qwen/Qwen3-32B":{input:.08,output:.28},"deepinfra/Qwen/Qwen3.5-35B-A3B":{input:.14,output:1,cache_read:.05},"deepinfra/Qwen/Qwen3.5-122B-A10B":{input:.29,output:2.4},"deepinfra/Qwen/Qwen3.5-9B":{input:.1,output:.15},"deepinfra/Qwen/Qwen3.5-397B-A17B":{input:.45,output:3,cache_read:.22},"deepinfra/Qwen/Qwen3.8-2.4T-A95B":{input:2,output:6,cache_read:.2},"deepinfra/Qwen/Qwen3-30B-A3B":{input:.12,output:.5},"deepinfra/Qwen/Qwen3.6-27B":{input:.32,output:3.2},"deepinfra/deepseek-ai/DeepSeek-V3.1":{input:.25,output:.95,cache_read:.13},"deepinfra/deepseek-ai/DeepSeek-V4-Flash-0731":{input:.06,output:.18,cache_read:.015},"deepinfra/deepseek-ai/DeepSeek-V4-Pro-0813":{input:1.3,output:2.6,cache_read:.1},"deepinfra/deepseek-ai/DeepSeek-V4.1-Flash":{input:.2,output:.6,cache_read:.006},"deepinfra/deepseek-ai/DeepSeek-V4-Flash":{input:.09,output:.18,cache_read:.018},"deepinfra/deepseek-ai/DeepSeek-V4-Pro":{input:1.3,output:2.6,cache_read:.1},"deepinfra/deepseek-ai/DeepSeek-V3.2":{input:.26,output:.38,cache_read:.13},"deepinfra/deepseek-ai/DeepSeek-R1-0528":{input:.5,output:2.15,cache_read:.35},"deepinfra/deepseek-ai/DeepSeek-V3":{input:.32,output:.89},"deepinfra/deepseek-ai/DeepSeek-V3-0324":{input:.24,output:.9,cache_read:.135},"deepinfra/deepseek-ai/DeepSeek-V4-Flash-Vision-Exp":{input:.44,output:1.32,cache_read:.014},"deepinfra/stepfun-ai/Step-3.7-Flash":{input:.2,output:1.15,cache_read:.04},"deepinfra/MiniMaxAI/MiniMax-M3":{input:.28,output:1.1,cache_read:.056},"deepinfra/MiniMaxAI/MiniMax-M2.5":{input:.15,output:1.15,cache_read:.03},"deepinfra/MiniMaxAI/MiniMax-M2.7":{input:.25,output:1,cache_read:.05},"deepinfra/moonshotai/Kimi-K2.6":{input:.75,output:3.5,cache_read:.15},"deepinfra/moonshotai/Kimi-K3":{input:2.85,output:14.25,cache_read:.285},"deepinfra/moonshotai/Kimi-K2.7-Code":{input:.68,output:3.4,cache_read:.136},"deepinfra/moonshotai/Kimi-K2.5":{input:.45,output:2.25,cache_read:.07},"deepinfra/zai-org/GLM-5.1":{input:1.05,output:3.5,cache_read:.205},"deepinfra/zai-org/GLM-5.2":{input:.75,output:2.4,cache_read:.14},"deepinfra/zai-org/GLM-4.7":{input:.4,output:1.75,cache_read:.08},"deepinfra/zai-org/GLM-5":{input:.6,output:2.08,cache_read:.12},"deepinfra/zai-org/GLM-5.3-Flash":{input:.15,output:.5,cache_read:.03},"deepinfra/zai-org/GLM-4.6":{input:.5,output:2,cache_read:.1},"deepinfra/zai-org/GLM-4.7-Flash":{input:.06,output:.4,cache_read:.01},"deepinfra/zai-org/GLM-5.3":{input:.9,output:4,cache_read:.2},"deepinfra/nvidia/Nemotron-3-Nano-30B-A3B":{input:.05,output:.2,cache_read:.025},"deepinfra/nvidia/Llama-3.3-Nemotron-Super-49B-v1.5":{input:.4,output:.4},"deepinfra/nvidia/Nemotron-3-Nano-Omni-30B-A3B-Reasoning":{input:.2,output:.8},"deepinfra/ByteDance/Seed-2.0-code":{input:.5,output:3,cache_read:.1,tiers:[{input:1,output:6,cache_read:.2,tier:{type:"context",size:128e3}}]},"deepinfra/ByteDance/Seed-2.0-pro":{input:.5,output:3,cache_read:.1,tiers:[{input:1,output:6,cache_read:.2,tier:{type:"context",size:128e3}}]},"deepinfra/ByteDance/Seed-2.0-mini":{input:.1,output:.4,cache_read:.02,tiers:[{input:.2,output:.8,cache_read:.2,tier:{type:"context",size:128e3}}]},"deepinfra/openai/gpt-oss-20b":{input:.03,output:.14},"deepinfra/openai/gpt-oss-120b":{input:.037,output:.17},"perplexity-agent/anthropic/claude-haiku-4-5":{input:1,output:5,cache_read:.1},"perplexity-agent/anthropic/claude-opus-4-5":{input:5,output:25,cache_read:.5},"perplexity-agent/anthropic/claude-sonnet-4-5":{input:3,output:15,cache_read:.3},"perplexity-agent/anthropic/claude-opus-4-6":{input:5,output:25,cache_read:.5},"perplexity-agent/anthropic/claude-sonnet-4-6":{input:3,output:15,cache_read:.3},"perplexity-agent/anthropic/claude-opus-4-7":{input:5,output:25,cache_read:.5},"perplexity-agent/deepseek/deepseek-v4-flash-0731":{input:.13,output:.26,cache_read:.028},"perplexity-agent/perplexity/sonar":{input:.25,output:2.5,cache_read:.0625},"perplexity-agent/google/gemini-3.1-pro-preview":{input:2,output:12,cache_read:.2,tiers:[{input:4,output:18,cache_read:.4,tier:{type:"context",size:2e5}}],context_over_200k:{input:4,output:18,cache_read:.4}},"perplexity-agent/google/gemini-2.5-pro":{input:1.25,output:10,cache_read:.125,tiers:[{input:2.5,output:15,cache_read:.25,tier:{type:"context",size:2e5}}],context_over_200k:{input:2.5,output:15,cache_read:.25}},"perplexity-agent/google/gemini-2.5-flash":{input:.3,output:2.5,cache_read:.03},"perplexity-agent/google/gemini-3-flash-preview":{input:.5,output:3,cache_read:.05,tiers:[{input:.5,output:3,cache_read:.05,tier:{type:"context",size:2e5}}],context_over_200k:{input:.5,output:3,cache_read:.05}},"perplexity-agent/xai/grok-4-1-fast-non-reasoning":{input:.2,output:.5,cache_read:.05},"perplexity-agent/xai/grok-4.6":{input:2,output:6,cache_read:.5,tiers:[{input:4,output:12,cache_read:1,tier:{type:"context",size:2e5}}],context_over_200k:{input:4,output:12,cache_read:1}},"perplexity-agent/nvidia/nemotron-3-super-120b-a12b":{input:.25,output:2.5},"perplexity-agent/moonshot-ai/kimi-k3":{input:3,output:15,cache_read:.3},"perplexity-agent/moonshot-ai/kimi-k2.7-code":{input:.95,output:4,cache_read:.19},"perplexity-agent/openai/gpt-5.4":{input:2.5,output:15,cache_read:.25},"perplexity-agent/openai/gpt-5-mini":{input:.25,output:2,cache_read:.025},"perplexity-agent/openai/gpt-5.1":{input:1.25,output:10,cache_read:.125},"perplexity-agent/openai/gpt-5.2":{input:1.75,output:14,cache_read:.175},"perplexity-agent/openai/gpt-5.5":{input:5,output:30,cache_read:.5},"bailing/Ring-1T":{input:.57,output:2.29},"bailing/Ling-1T":{input:.57,output:2.29},"poe/cerebras/llama-3.1-8b-cs":{input:.1,output:.1},"poe/cerebras/gpt-oss-120b-cs":{input:.35,output:.75},"poe/empiriolabs/deepseek-v4-pro-el":{input:1.67,output:3.33},"poe/empiriolabs/deepseek-v4-flash-el":{input:.14,output:.28},"poe/anthropic/claude-haiku-3.5":{input:.68,output:3.4,cache_read:.068,cache_write:.85},"poe/anthropic/claude-opus-4.1":{input:13,output:64,cache_read:1.3,cache_write:16},"poe/anthropic/claude-opus-4.5":{input:4.3,output:21,cache_read:.43,cache_write:5.3},"poe/anthropic/claude-opus-4.6":{input:4.3,output:21,cache_read:.43,cache_write:5.3},"poe/anthropic/claude-sonnet-3.5-june":{input:2.6,output:13,cache_read:.26,cache_write:3.2},"poe/anthropic/claude-opus-4.7":{input:4.3,output:21,cache_read:.43,cache_write:5.4},"poe/anthropic/claude-haiku-3":{input:.21,output:1.1,cache_read:.021,cache_write:.26},"poe/anthropic/claude-opus-4.8":{input:4.2929,output:21.4646},"poe/anthropic/claude-sonnet-3.7":{input:2.6,output:13,cache_read:.26,cache_write:3.2},"poe/anthropic/claude-haiku-4.5":{input:.85,output:4.3,cache_read:.085,cache_write:1.1},"poe/anthropic/claude-sonnet-4.5":{input:2.6,output:13,cache_read:.26,cache_write:3.2},"poe/anthropic/claude-sonnet-4":{input:2.6,output:13,cache_read:.26,cache_write:3.2},"poe/anthropic/claude-sonnet-3.5":{input:2.6,output:13,cache_read:.26,cache_write:3.2},"poe/anthropic/claude-sonnet-4.6":{input:2.6,output:13,cache_read:.26,cache_write:3.2},"poe/anthropic/claude-opus-4":{input:13,output:64,cache_read:1.3,cache_write:16},"poe/novita/glm-5":{input:1,output:3.2,cache_read:.2},"poe/novita/kimi-k2.6":{input:.96,output:4.04,cache_read:.16},"poe/novita/kimi-k2.5":{input:.6,output:3,cache_read:.1},"poe/novita/deepseek-v3.2":{input:.27,output:.4,cache_read:.13},"poe/google/gemini-deep-research":{input:1.6,output:9.6},"poe/google/nano-banana":{input:.21,output:1.8,cache_read:.021},"poe/google/gemini-2.0-flash":{input:.1,output:.42},"poe/google/nano-banana-pro":{input:2,output:12,cache_read:.2},"poe/google/gemini-2.0-flash-lite":{input:.052,output:.21},"poe/google/gemini-3-flash":{input:.4,output:2.4,cache_read:.04},"poe/google/gemini-3.5-flash":{input:1.5152,output:9.0909,cache_read:.1515},"poe/google/gemini-2.5-pro":{input:.87,output:7,cache_read:.087},"poe/google/gemini-2.5-flash":{input:.21,output:1.8,cache_read:.021},"poe/google/gemini-3-pro":{input:1.6,output:9.6,cache_read:.16},"poe/google/gemini-2.5-flash-lite":{input:.07,output:.28},"poe/google/gemini-3.1-pro":{input:2,output:12,cache_read:.2},"poe/google/gemini-3.1-flash-lite":{input:.25,output:1.5},"poe/xai/grok-3":{input:3,output:15,cache_read:.75},"poe/xai/grok-4.20-multi-agent":{input:2,output:6,cache_read:.2},"poe/xai/grok-4":{input:3,output:15,cache_read:.75},"poe/xai/grok-4-fast-reasoning":{input:.2,output:.5,cache_read:.05},"poe/xai/grok-4-fast-non-reasoning":{input:.2,output:.5,cache_read:.05},"poe/xai/grok-3-mini":{input:.3,output:.5,cache_read:.075},"poe/xai/grok-code-fast-1":{input:.2,output:1.5,cache_read:.02},"poe/openai/gpt-5.4":{input:2.2,output:14,cache_read:.22},"poe/openai/gpt-5.4-pro":{input:27,output:160},"poe/openai/gpt-3.5-turbo":{input:.45,output:1.4},"poe/openai/gpt-5.5-pro":{input:27.2727,output:163.6364},"poe/openai/gpt-5.4-nano":{input:.18,output:1.1,cache_read:.018},"poe/openai/gpt-5.2-codex":{input:1.6,output:13,cache_read:.16},"poe/openai/gpt-5.1-codex":{input:1.1,output:9,cache_read:.11},"poe/openai/gpt-4o-search":{input:2.2,output:9},"poe/openai/gpt-5-codex":{input:1.1,output:9},"poe/openai/gpt-5-mini":{input:.22,output:1.8,cache_read:.022},"poe/openai/gpt-image-2":{input:5.0505,output:32.3232,cache_read:1.2626},"poe/openai/gpt-5.2-pro":{input:19,output:150},"poe/openai/o4-mini":{input:.99,output:4,cache_read:.25},"poe/openai/o3-mini":{input:.99,output:4},"poe/openai/gpt-5.3-codex":{input:1.6,output:13,cache_read:.16},"poe/openai/gpt-4.1-nano":{input:.09,output:.36,cache_read:.022},"poe/openai/o3-deep-research":{input:9,output:36,cache_read:2.2},"poe/openai/gpt-5-nano":{input:.045,output:.36,cache_read:.0045},"poe/openai/gpt-5.2-instant":{input:1.6,output:13,cache_read:.16},"poe/openai/o1":{input:14,output:54},"poe/openai/chatgpt-4o-latest":{input:4.5,output:14},"poe/openai/gpt-5-pro":{input:14,output:110},"poe/openai/gpt-3.5-turbo-instruct":{input:1.4,output:1.8},"poe/openai/gpt-5.1":{input:1.1,output:9,cache_read:.11},"poe/openai/gpt-5-chat":{input:1.1,output:9,cache_read:.11},"poe/openai/gpt-4o-mini":{input:.14,output:.54,cache_read:.068},"poe/openai/o3-pro":{input:18,output:72},"poe/openai/gpt-5.3-instant":{input:1.6,output:13,cache_read:.16},"poe/openai/gpt-4o-aug":{input:2.2,output:9,cache_read:1.1},"poe/openai/o3-mini-high":{input:.99,output:4},"poe/openai/gpt-5.1-instant":{input:1.1,output:9,cache_read:.11},"poe/openai/gpt-5.4-mini":{input:.68,output:4,cache_read:.068},"poe/openai/gpt-5.1-codex-max":{input:1.1,output:9,cache_read:.11},"poe/openai/gpt-5.2":{input:1.6,output:13,cache_read:.16},"poe/openai/gpt-5.5":{input:4.5455,output:27.2727,cache_read:.4545},"poe/openai/o4-mini-deep-research":{input:1.8,output:7.2,cache_read:.45},"poe/openai/gpt-4.1":{input:1.8,output:7.2,cache_read:.45},"poe/openai/gpt-4-classic-0314":{input:27,output:54},"poe/openai/gpt-4-classic":{input:27,output:54},"poe/openai/gpt-4o-mini-search":{input:.14,output:.54},"poe/openai/gpt-3.5-turbo-raw":{input:.45,output:1.4},"poe/openai/gpt-4.1-mini":{input:.36,output:1.4,cache_read:.09},"poe/openai/gpt-4-turbo":{input:9,output:27},"poe/openai/gpt-5.1-codex-mini":{input:.22,output:1.8,cache_read:.022},"poe/openai/o3":{input:1.8,output:7.2,cache_read:.45},"poe/openai/gpt-5":{input:1.1,output:9,cache_read:.11},"poe/openai/o1-pro":{input:140,output:540},"cerebras/qwen-3.8-27b":{input:.99,output:1.49},"cerebras/gpt-oss-120b":{input:.35,output:.75},"groq/llama-3.3-70b-versatile":{input:.59,output:.79},"groq/llama-3.1-8b-instant":{input:.05,output:.08},"groq/meta-llama/llama-prompt-guard-2-86m":{input:.04,output:.04},"groq/meta-llama/llama-prompt-guard-2-22m":{input:.03,output:.03},"groq/qwen/qwen3.8-27b":{input:.8,output:4},"groq/qwen/qwen3.6-27b":{input:.6,output:3,cache_read:.3},"groq/openai/gpt-oss-20b":{input:.075,output:.3,cache_read:.0375},"groq/openai/gpt-oss-safeguard-20b":{input:.075,output:.3},"groq/openai/gpt-oss-120b":{input:.15,output:.6,cache_read:.075},"zai/glm-4.6v":{input:.3,output:.9},"zai/glm-4.5":{input:.6,output:2.2,cache_read:.11,cache_write:0},"zai/glm-5v-turbo":{input:1.2,output:4,cache_read:.24,cache_write:0},"zai/glm-5.3-flash":{input:.15,output:.5,cache_read:.03,cache_write:0},"zai/glm-4.6":{input:.6,output:2.2,cache_read:.11,cache_write:0},"zai/glm-5":{input:1,output:3.2,cache_read:.2,cache_write:0},"zai/glm-4.5v":{input:.6,output:1.8},"zai/glm-5.3-flashx":{input:.37,output:1.25,cache_read:.075,cache_write:0},"zai/glm-4.7":{input:.6,output:2.2,cache_read:.11,cache_write:0},"zai/glm-5.2":{input:1.4,output:4.4,cache_read:.26,cache_write:0},"zai/glm-5.1":{input:1.4,output:4.4,cache_read:.26,cache_write:0},"zai/glm-4.7-flashx":{input:.07,output:.4,cache_read:.01,cache_write:0},"zai/glm-5-turbo":{input:1.2,output:4,cache_read:.24,cache_write:0},"zai/glm-4.5-air":{input:.2,output:1.1,cache_read:.03,cache_write:0},"zai/glm-5.3":{input:1.4,output:4.4,cache_read:.26,cache_write:0},"empiriolabs/qwen3-8-max-0902":{input:2,output:6,cache_read:2},"empiriolabs/qwen3-6-plus":{input:.5,output:3,cache_read:.5,tiers:[{input:2,output:6,cache_read:2,tier:{type:"context",size:256e3}}],context_over_200k:{input:2,output:6,cache_read:2}},"empiriolabs/qwen3-6-27b":{input:.412564,output:2.475384,cache_read:.412564},"empiriolabs/glm-5-3-flash":{input:.075,output:.25,cache_read:.075},"empiriolabs/kimi-k2-7-code":{input:.95,output:4,cache_read:.95},"empiriolabs/seed-2-0-lite":{input:.31,output:2.5,cache_read:.31,tiers:[{input:.62,output:5,cache_read:.62,tier:{type:"context",size:128e3}}]},"empiriolabs/deepseek-v4-flash-0731":{input:.424,output:1.272,cache_read:.424},"empiriolabs/mimo-v2-5":{input:.7,output:1.4,cache_read:.014},"empiriolabs/seed-2-0-mini":{input:.12,output:.5,cache_read:.12,tiers:[{input:.24,output:1,cache_read:.24,tier:{type:"context",size:128e3}}]},"empiriolabs/muse-glimmer-30b":{input:.2,output:.8,cache_read:.05},"empiriolabs/kimi-k3":{input:3,output:15,cache_read:3},"empiriolabs/mimo-v2-6-pro":{input:.435,output:.87,cache_read:.435},"empiriolabs/qwen3-7-max":{input:2.5,output:7.5,cache_read:2.5},"empiriolabs/step-3-5-flash":{input:.1,output:.3,cache_read:.02},"empiriolabs/qwen3-8-max":{input:2,output:6,cache_read:2},"empiriolabs/deepseek-v3-2":{input:.57,output:1.71,cache_read:.57},"empiriolabs/minimax-m2-7-highspeed":{input:.3,output:1.2,cache_read:.03},"empiriolabs/mimo-v2-5-pro":{input:2.175,output:4.35,cache_read:.018},"empiriolabs/qwen3-max":{input:1.08,output:5.52,cache_read:1.08,tiers:[{input:2.16,output:11.04,cache_read:2.16,tier:{type:"context",size:32e3}},{input:2.7,output:13.8,cache_read:2.7,tier:{type:"context",size:128e3}}]},"empiriolabs/seed-2-0-pro":{input:.63,output:3.79,cache_read:.63,tiers:[{input:1.26,output:7.58,cache_read:1.26,tier:{type:"context",size:128e3}}]},"empiriolabs/qwen3-5-4b":{input:.04,output:.07,cache_read:.02},"empiriolabs/step-5-preview":{input:1,output:2.7,cache_read:.05},"empiriolabs/qwen3-5-27b":{input:.086,output:.688,cache_read:.086,tiers:[{input:.258,output:2.064,cache_read:.258,tier:{type:"context",size:128e3}}]},"empiriolabs/seed-2-1-turbo":{input:.63,output:3.13,cache_read:.63},"empiriolabs/fugu-ultra-v1-0":{input:7.5,output:45,cache_read:1.5,tiers:[{input:15,output:67.5,cache_read:3,tier:{type:"context",size:272e3}}],context_over_200k:{input:15,output:67.5,cache_read:3}},"empiriolabs/qwen3-5-122b-a10b":{input:.115,output:.917,cache_read:.115,tiers:[{input:.287,output:2.294,cache_read:.287,tier:{type:"context",size:128e3}}]},"empiriolabs/qwen3-5-flash":{input:.09,output:.368,cache_read:.09},"empiriolabs/mimo-v2-6-pro-ultraspeed":{input:4.35,output:8.7,cache_read:4.35},"empiriolabs/glm-5-2":{input:1.4,output:4.4,cache_read:1.4},"empiriolabs/mimo-v2-6-flash":{input:.14,output:.28,cache_read:.14},"empiriolabs/muse-spark-1-2":{input:1.25,output:4.25,cache_read:1},"empiriolabs/qwen3-7-flash":{input:.03,output:.13,cache_read:.006,tiers:[{input:.1,output:.4,cache_read:.02,tier:{type:"context",size:32e3}},{input:.2,output:.8,cache_read:.04,tier:{type:"context",size:256e3}}]},"empiriolabs/minimax-m2-7":{input:.15,output:.6,cache_read:.03},"empiriolabs/qwen3-6-35b-a3b":{input:.07,output:.42,cache_read:.035},"empiriolabs/qwen3-5-9b":{input:.09,output:.13,cache_read:.045},"empiriolabs/step-3-5-flash-2603":{input:.1,output:.3,cache_read:.02},"empiriolabs/qwen3-5-35b-a3b":{input:.057,output:.459,cache_read:.057,tiers:[{input:.229,output:1.835,cache_read:.229,tier:{type:"context",size:128e3}}]},"empiriolabs/deepseek-v4-pro-0813":{input:1.32,output:3.96,cache_read:1.32},"empiriolabs/kimi-k2-6":{input:.8939,output:3.7131,cache_read:.1788},"empiriolabs/minimax-m3":{input:.225,output:.9,cache_read:.045,tiers:[{input:.45,output:1.8,cache_read:.09,tier:{type:"context",size:512e3}}],context_over_200k:{input:.45,output:1.8,cache_read:.09}},"empiriolabs/glm-5-3":{input:1.4,output:4.4,cache_read:1.4},"empiriolabs/fugu-ultra-v1-1":{input:5,output:30,cache_read:.5,tiers:[{input:10,output:45,cache_read:1,tier:{type:"context",size:272e3}}],context_over_200k:{input:10,output:45,cache_read:1}},"empiriolabs/kimi-k2-7-code-highspeed":{input:1.9,output:8,cache_read:1.9},"empiriolabs/deepseek-v4-1-flash":{input:.3,output:1.2,cache_read:.3},"empiriolabs/qwen3-7-plus":{input:.4,output:1.6,cache_read:.4,tiers:[{input:1.2,output:4.8,cache_read:1.2,tier:{type:"context",size:256e3}}],context_over_200k:{input:1.2,output:4.8,cache_read:1.2}},"empiriolabs/glm-5-1":{input:.825,output:3.301,cache_read:.165,tiers:[{input:1.1,output:3.851,cache_read:.22,tier:{type:"context",size:32e3}}]},"empiriolabs/fugu-ultra-v2-0":{input:5,output:30,cache_read:.5,tiers:[{input:10,output:45,cache_read:1,tier:{type:"context",size:272e3}}],context_over_200k:{input:10,output:45,cache_read:1}},"empiriolabs/mistral-small-4":{input:.15,output:.6,cache_read:.15},"empiriolabs/qwen3-8-omni-flash":{input:.3,output:.94,cache_read:.3},"empiriolabs/qwen3-5-plus":{input:.36,output:2.21,cache_read:.36,tiers:[{input:1.08,output:6.62,cache_read:1.08,tier:{type:"context",size:256e3}}],context_over_200k:{input:1.08,output:6.62,cache_read:1.08}},"empiriolabs/muse-spark-1-3":{input:1.25,output:4.25,cache_read:1},"empiriolabs/deepseek-v4-pro":{input:1.65,output:3.3,cache_read:1.65},"empiriolabs/qwen3-8-flash":{input:.16,output:.47,cache_read:.16},"empiriolabs/qwen3-6-flash":{input:.25,output:1.5,cache_read:.25,tiers:[{input:1,output:4,cache_read:1,tier:{type:"context",size:256e3}}],context_over_200k:{input:1,output:4,cache_read:1}},"empiriolabs/seed-2-0-code":{input:.4,output:2.4,cache_read:.4,tiers:[{input:.8,output:4.8,cache_read:.8,tier:{type:"context",size:128e3}}]},"empiriolabs/qwen3-8-27b":{input:.17,output:.5,cache_read:.08},"empiriolabs/muse-spark-1-1":{input:1.25,output:4.25,cache_read:1},"empiriolabs/qwen3-6-max-preview":{input:1.31,output:7.88,cache_read:1.31,tiers:[{input:1.97,output:11.82,cache_read:1.97,tier:{type:"context",size:128e3}}]},"empiriolabs/step-3-7-flash":{input:.2,output:1.15,cache_read:.04},"empiriolabs/qwen3-5-397b-a17b":{input:.172,output:1.032,cache_read:.172,tiers:[{input:.43,output:2.58,cache_read:.43,tier:{type:"context",size:128e3}}]},"empiriolabs/gemma-4-26b-a4b":{input:.05,output:.29,cache_read:.025},"empiriolabs/deepseek-v4-flash":{input:.14,output:.28,cache_read:.14},"cloudflare-workers-ai/@cf/meta/llama-3.3-70b-instruct-fp8-fast":{input:.293,output:2.253},"cloudflare-workers-ai/@cf/meta/llama-guard-3-8b":{input:.484,output:.03},"cloudflare-workers-ai/@cf/meta/llama-3.1-8b-instruct-fp8":{input:.152,output:.287},"cloudflare-workers-ai/@cf/meta/llama-3.2-11b-vision-instruct":{input:.0485,output:.676},"cloudflare-workers-ai/@cf/meta/llama-3.2-1b-instruct":{input:.027,output:.201},"cloudflare-workers-ai/@cf/meta/llama-4-scout-17b-16e-instruct":{input:.27,output:.85},"cloudflare-workers-ai/@cf/meta/llama-3.2-3b-instruct":{input:.0509,output:.335},"cloudflare-workers-ai/@cf/google/gemma-4-26b-a4b-it":{input:.1,output:.3},"cloudflare-workers-ai/@cf/aisingapore/gemma-sea-lion-v4-27b-it":{input:.351,output:.555},"cloudflare-workers-ai/@cf/ibm-granite/granite-4.0-h-micro":{input:.017,output:.112},"cloudflare-workers-ai/@cf/deepseek-ai/deepseek-v4-flash-0731":{input:.44,output:1.32,cache_read:.014},"cloudflare-workers-ai/@cf/deepseek-ai/deepseek-v4-pro-0813":{input:1.32,output:3.96,cache_read:.044},"cloudflare-workers-ai/@cf/deepseek-ai/deepseek-r1-distill-qwen-32b":{input:.497,output:4.881},"cloudflare-workers-ai/@cf/mistralai/mistral-small-3.1-24b-instruct":{input:.351,output:.555},"cloudflare-workers-ai/@cf/moonshotai/kimi-k2.6":{input:.95,output:4,cache_read:.16},"cloudflare-workers-ai/@cf/moonshotai/kimi-k2.7-code":{input:.95,output:4,cache_read:.19},"cloudflare-workers-ai/@cf/zai-org/glm-5.3-flash":{input:.15,output:.5,cache_read:.03},"cloudflare-workers-ai/@cf/zai-org/glm-4.7-flash":{input:.0605,output:.4},"cloudflare-workers-ai/@cf/zai-org/glm-5.2":{input:1.4,output:4.4,cache_read:.26},"cloudflare-workers-ai/@cf/zai-org/glm-5.3":{input:1.4,output:4.4,cache_read:.26},"cloudflare-workers-ai/@cf/nvidia/nemotron-3-120b-a12b":{input:.5,output:1.5},"cloudflare-workers-ai/@cf/qwen/qwen3.8-27b":{input:.45,output:3.2,cache_read:.05},"cloudflare-workers-ai/@cf/qwen/qwq-32b":{input:.66,output:1},"cloudflare-workers-ai/@cf/qwen/qwen3-30b-a3b-fp8":{input:.0509,output:.335},"cloudflare-workers-ai/@cf/qwen/qwen2.5-coder-32b-instruct":{input:.66,output:1},"cloudflare-workers-ai/@cf/openai/gpt-oss-20b":{input:.2,output:.3},"cloudflare-workers-ai/@cf/openai/gpt-oss-120b":{input:.35,output:.75},"nano-gpt/deepseek-reasoner-cheaper":{input:.4,output:1.7,cache_read:.2},"nano-gpt/doubao-seed-2-0-lite-260215":{input:.1462,output:.8738,cache_read:.0731},"nano-gpt/doubao-seed-2-0-mini-260215":{input:.0493,output:.4845,cache_read:.02465},"nano-gpt/fastgpt":{input:7.5,output:7.5},"nano-gpt/doubao-seed-2-0-pro-260215":{input:.782,output:3.876,cache_read:.391},"nano-gpt/ernie-5.0-thinking-preview":{input:1,output:3.5,cache_read:.5},"nano-gpt/gemini-2.5-flash-lite-preview-09-2025-thinking":{input:.1,output:.4,cache_read:.01},"nano-gpt/gemma-4-12b-it-station-keeper":{input:.05,output:.25,cache_read:.025},"nano-gpt/glm-4-air-0111":{input:.1394,output:.1394,cache_read:.0697},"nano-gpt/glm-4.1v-thinking-flashx":{input:.3,output:.3,cache_read:.15},"nano-gpt/deepseek-v3-0324":{input:.2,output:.77,cache_read:.135},"nano-gpt/venice-uncensored":{input:.4,output:1.8,cache_read:.4},"nano-gpt/Gemma-4-31B-MeroMero-v2:thinking":{input:.1,output:.45,cache_read:.05},"nano-gpt/gemini-2.0-pro-reasoner":{input:1.292,output:4.998,cache_read:.323},"nano-gpt/Meta-Llama-3-1-8B-Instruct-FP8":{input:.02,output:.03,cache_read:.01},"nano-gpt/glm-4-plus-0111":{input:9.996,output:9.996,cache_read:4.998},"nano-gpt/holo3-35b-a3b:thinking":{input:.25,output:1.8,cache_read:.125},"nano-gpt/gemma-4-26b-a4b-it-moonlight":{input:.12,output:.38,cache_read:.06},"nano-gpt/phi-4-mini-instruct":{input:.17,output:.68,cache_read:.085},"nano-gpt/auto-model-premium":{input:9.996,output:19.992,cache_read:4.998},"nano-gpt/gemma-4-31b-it-darkidol":{input:.1,output:.45,cache_read:.05},"nano-gpt/gemini-2.5-flash-lite-preview-06-17":{input:.15,output:.6,cache_read:.015},"nano-gpt/gemini-2.5-flash-preview-09-2025":{input:.3,output:2.5,cache_read:.03},"nano-gpt/gemma-4-26b-a4b-it-opusdistill":{input:.12,output:.38,cache_read:.06},"nano-gpt/auto-model-standard":{input:9.996,output:19.992,cache_read:4.998},"nano-gpt/longcat-2.0":{input:.75,output:3,cache_read:.015},"nano-gpt/gemini-2.5-pro-preview-03-25":{input:2.5,output:10,cache_read:.25},"nano-gpt/agnes-3.0-flash":{input:.05,output:.15,cache_read:.005},"nano-gpt/Gemma-4-31B-Queen":{input:.306,output:.306,cache_read:.153},"nano-gpt/qvq-max":{input:1.2,output:4.8,cache_read:.6},"nano-gpt/asi1-mini":{input:1,output:1,cache_read:.5},"nano-gpt/gemini-2.5-pro-exp-03-25":{input:2.5,output:10,cache_read:.25},"nano-gpt/gemma-4-31b-it-isometry":{input:.1,output:.45,cache_read:.05},"nano-gpt/celeris-1":{input:2,output:6,cache_read:1},"nano-gpt/gemini-3-pro-image-preview":{input:2,output:12,cache_read:.2},"nano-gpt/gemma-4-26b-a4b-it-darksoul":{input:.12,output:.38,cache_read:.06},"nano-gpt/glm-4.1v-thinking-flash":{input:.3,output:.3,cache_read:.15},"nano-gpt/Gemma-4-31B-GarnetV2":{input:.306,output:.306,cache_read:.153},"nano-gpt/gemini-2.5-flash-nothinking":{input:.3,output:2.5,cache_read:.03},"nano-gpt/Gemma-4-31B-MeroMero-v2":{input:.1,output:.45,cache_read:.05},"nano-gpt/holo3-35b-a3b":{input:.25,output:1.8,cache_read:.125},"nano-gpt/claw-medium":{input:1,output:3.2,cache_read:.2},"nano-gpt/gemma-4-26b-a4b-it-shadowsiren":{input:.12,output:.38,cache_read:.06},"nano-gpt/gemini-2.0-pro-exp-02-05":{input:1.989,output:7.956,cache_read:.49725},"nano-gpt/claw-high":{input:1,output:3.2,cache_read:.2},"nano-gpt/deepseek-chat":{input:.1,output:.425,cache_read:.05},"nano-gpt/Gemma-4-26B-A4B-MeroMero:thinking":{input:.12,output:.38,cache_read:.06},"nano-gpt/claw-low":{input:1,output:3.2,cache_read:.2,cache_write:.08333},"nano-gpt/doubao-1.5-pro-32k":{input:.1343,output:.3349,cache_read:.06715},"nano-gpt/doubao-seed-2-0-code-preview-260215":{input:.782,output:3.893,cache_read:.391},"nano-gpt/hermes-low":{input:1,output:3.2,cache_read:.2,cache_write:.08333},"nano-gpt/gemma-4-31b-it-gemsicle":{input:.1,output:.45,cache_read:.05},"nano-gpt/mercury-coder-small":{input:.25,output:1,cache_read:.125},"nano-gpt/gemini-2.5-pro":{input:1.25,output:10,cache_read:.125,cache_write:.375},"nano-gpt/ernie-x1.1-preview":{input:.15,output:.6,cache_read:.075},"nano-gpt/gemini-2.5-flash":{input:.3,output:2.5,cache_read:.03},"nano-gpt/hermes-high":{input:1,output:3.2,cache_read:.2},"nano-gpt/gemini-2.5-flash-preview-05-20":{input:.15,output:.6,cache_read:.015},"nano-gpt/glm-4-long":{input:.2006,output:.2006,cache_read:.1003},"nano-gpt/pokee-isaac":{input:.15,output:1,cache_read:.075},"nano-gpt/MiniMax-M1":{input:.1394,output:1.3328,cache_read:.0697},"nano-gpt/Gemma-4-31B-Claude-4.6-Opus-Reasoning-Distilled":{input:.306,output:.306,cache_read:.0306},"nano-gpt/Qwen3.5-27B-BlueStar-v3-Derestricted":{input:.306,output:.306,cache_read:.153},"nano-gpt/gemma-4-31b-it-novelist":{input:.1,output:.45,cache_read:.05},"nano-gpt/ernie-5.1:thinking":{input:.75,output:3,cache_read:.75},"nano-gpt/gemma-4-12b-it-semancer":{input:.05,output:.25,cache_read:.025},"nano-gpt/mistral-code-latest":{input:.3,output:.9,cache_read:.15},"nano-gpt/Qwen3.5-27B-Queen-Derestricted":{input:.306,output:.306,cache_read:.153},"nano-gpt/gemma-4-31b-it-fabled":{input:.1,output:.45,cache_read:.05},"nano-gpt/Gemma-4-26B-A4B-MeroMero":{input:.12,output:.38,cache_read:.06},"nano-gpt/Gemma-4-31B-Cognitive-Unshackled":{input:.306,output:.306,cache_read:.153},"nano-gpt/universal-summarizer":{input:30,output:30},"nano-gpt/gemma-4-12b-it":{input:.05,output:.25,cache_read:.025},"nano-gpt/gemini-exp-1206":{input:1.258,output:4.998,cache_read:.629},"nano-gpt/gemini-2.5-flash-preview-09-2025-thinking":{input:.3,output:2.5,cache_read:.03},"nano-gpt/doubao-1.5-pro-256k":{input:.799,output:1.445,cache_read:.3995},"nano-gpt/gemma-4-31b-it-garnet":{input:.1,output:.45,cache_read:.05},"nano-gpt/gemini-2.5-pro-preview-05-06":{input:2.5,output:10,cache_read:.25},"nano-gpt/mercury-2":{input:.25,output:.75,cache_read:.025},"nano-gpt/command-a-reasoning-08-2025":{input:2.5,output:10,cache_read:1.25},"nano-gpt/longcat-2.0:thinking":{input:.75,output:3,cache_read:.015},"nano-gpt/deepseek-r1-sambanova":{input:4.998,output:6.987,cache_read:2.499},"nano-gpt/gemini-2.5-flash-preview-04-17":{input:.15,output:.6,cache_read:.015},"nano-gpt/deepseek-reasoner":{input:.4,output:1.7,cache_read:.2},"nano-gpt/gemini-2.5-flash-lite-preview-09-2025":{input:.1,output:.4,cache_read:.01},"nano-gpt/gemini-2.5-flash-preview-04-17:thinking":{input:.15,output:3.5,cache_read:.015},"nano-gpt/deepseek-r1":{input:.4,output:1.7,cache_read:.2},"nano-gpt/gemini-2.5-pro-preview-06-05":{input:2.5,output:10,cache_read:.25},"nano-gpt/gemini-2.5-flash-lite":{input:.1,output:.4,cache_read:.01},"nano-gpt/deepseek-chat-cheaper":{input:.1,output:.425,cache_read:.05},"nano-gpt/GLM-4.6-Derestricted-v5":{input:.4,output:1.5,cache_read:.2},"nano-gpt/doubao-1.5-vision-pro-32k":{input:.459,output:1.377,cache_read:.2295},"nano-gpt/glm-z1-airx":{input:.7,output:.7,cache_read:.35},"nano-gpt/auto-model-basic":{input:9.996,output:19.992,cache_read:4.998},"nano-gpt/qwen3-vl-235b-a22b-instruct-original":{input:.3,output:1.9,cache_read:.15},"nano-gpt/gemma-4-26b-a4b-it-luminous":{input:.12,output:.38,cache_read:.06},"nano-gpt/sarvam-105b":{input:.054,output:.2124,cache_read:.0336},"nano-gpt/gemma-4-31b-it-gembrain":{input:.1,output:.45,cache_read:.05},"nano-gpt/phi-4-multimodal-instruct":{input:.07,output:.11,cache_read:.035},"nano-gpt/gemini-2.5-flash-preview-05-20:thinking":{input:.15,output:3.5,cache_read:.015},"nano-gpt/gemma-4-26b-a4b-it-musica":{input:.12,output:.38,cache_read:.06},"nano-gpt/gemma-4-26b-a4b-it-chimerax":{input:.12,output:.38,cache_read:.06},"nano-gpt/hermes-medium":{input:1,output:3.2,cache_read:.2},"nano-gpt/doubao-seed-1-6-250615":{input:.204,output:.51,cache_read:.102},"nano-gpt/Gemma-4-31B-DarkIdol":{input:.306,output:.306,cache_read:.153},"nano-gpt/ernie-5.1":{input:.75,output:3,cache_read:.75},"nano-gpt/doubao-seed-1-6-flash-250615":{input:.0374,output:.374,cache_read:.0187},"nano-gpt/mistral-code-agent-latest":{input:.4,output:2,cache_read:.2},"nano-gpt/kimi-k2-instruct-fast":{input:.4,output:1.8,cache_read:.2},"nano-gpt/featherless-ai/Qwerky-72B":{input:.5,output:.5,cache_read:.25},"nano-gpt/stealth/space-bunny-alpha":{input:.05,output:.15},"nano-gpt/unsloth/gemma-3-27b-it":{input:.2992,output:.2992,cache_read:.1496},"nano-gpt/unsloth/gemma-3-12b-it":{input:.272,output:.272,cache_read:.136},"nano-gpt/unsloth/gemma-3-4b-it":{input:.2006,output:.2006,cache_read:.1003},"nano-gpt/bytedance-seed/seed-2.0-lite":{input:.25,output:2,cache_read:.125},"nano-gpt/bytedance-seed/seed-2-1-turbo":{input:.5,output:2.5,cache_read:.25},"nano-gpt/bytedance-seed/seed-2.0-code":{input:.5,output:3,cache_read:.25},"nano-gpt/poolside/laguna-s-2.1:thinking":{input:.1,output:.2,cache_read:.01},"nano-gpt/poolside/laguna-s-2.1":{input:.1,output:.2,cache_read:.01},"nano-gpt/abliteration-ai/abliterated-model-large-v2":{input:3,output:5,cache_read:.3},"nano-gpt/abliteration-ai/abliterated-model":{input:1,output:3,cache_read:.1},"nano-gpt/abliteration-ai/abliterated-model-large":{input:3,output:5,cache_read:.3},"nano-gpt/prism-ml/ternary-bonsai-2-27b":{input:.075,output:.5,cache_read:.0375},"nano-gpt/anthropic/claude-opus-4.5:thinking":{input:5,output:25,cache_read:.5},"nano-gpt/anthropic/claude-sonnet-4.5:thinking":{input:3,output:15,cache_read:.3},"nano-gpt/anthropic/claude-opus-4.6:thinking:low":{input:5,output:25,cache_read:.5},"nano-gpt/anthropic/claude-opus-4.1":{input:15,output:75,cache_read:1.5},"nano-gpt/anthropic/claude-opus-4.5":{input:5,output:25,cache_read:.5},"nano-gpt/anthropic/claude-opus-4.6":{input:5,output:25,cache_read:.5},"nano-gpt/anthropic/claude-opus-4.7":{input:5,output:25,cache_read:.5},"nano-gpt/anthropic/claude-sonnet-4:thinking:64000":{input:3,output:15,cache_read:.3},"nano-gpt/anthropic/claude-opus-latest":{input:4,output:20,cache_read:.2,cache_write:5},"nano-gpt/anthropic/claude-opus-4.1:thinking:1024":{input:15,output:75,cache_read:1.5},"nano-gpt/anthropic/claude-haiku-latest":{input:1,output:5,cache_read:.1},"nano-gpt/anthropic/claude-opus-4.8":{input:5,output:25,cache_read:.5},"nano-gpt/anthropic/claude-sonnet-4:thinking:8192":{input:3,output:15,cache_read:.3},"nano-gpt/anthropic/claude-sonnet-4:thinking:1024":{input:3,output:15,cache_read:.3},"nano-gpt/anthropic/claude-opus-4.6:thinking":{input:5,output:25,cache_read:.5},"nano-gpt/anthropic/claude-sonnet-latest":{input:2,output:10,cache_read:.2,cache_write:2.5},"nano-gpt/anthropic/claude-opus-4.6:thinking:medium":{input:5,output:25,cache_read:.5},"nano-gpt/anthropic/claude-haiku-4.5":{input:1,output:5,cache_read:.1},"nano-gpt/anthropic/claude-opus-5":{input:5,output:25,cache_read:.5,cache_write:6.25},"nano-gpt/anthropic/claude-fable-latest":{input:10,output:50,cache_read:.25,cache_write:12.5},"nano-gpt/anthropic/claude-sonnet-4:thinking:32768":{input:3,output:15,cache_read:.3},"nano-gpt/anthropic/claude-fable-5.1":{input:10,output:50,cache_read:.25,cache_write:12.5},"nano-gpt/anthropic/claude-sonnet-4.5":{input:3,output:15,cache_read:.3},"nano-gpt/anthropic/claude-opus-4.1:thinking:8192":{input:15,output:75,cache_read:1.5},"nano-gpt/anthropic/claude-haiku-4.5:thinking":{input:1,output:5,cache_read:.1},"nano-gpt/anthropic/claude-fable-5":{input:10,output:50,cache_read:1,cache_write:12.5},"nano-gpt/anthropic/claude-opus-4:thinking:1024":{input:15,output:75,cache_read:1.5},"nano-gpt/anthropic/claude-opus-4.8:thinking":{input:5,output:25,cache_read:.5},"nano-gpt/anthropic/claude-sonnet-4":{input:3,output:15,cache_read:.3},"nano-gpt/anthropic/claude-sonnet-5":{input:2,output:10,cache_read:.2,cache_write:2.5},"nano-gpt/anthropic/claude-sonnet-4.6:thinking":{input:3,output:15,cache_read:.3},"nano-gpt/anthropic/claude-opus-4:thinking:32768":{input:15,output:75,cache_read:1.5},"nano-gpt/anthropic/claude-opus-4.6:thinking:max":{input:5,output:25,cache_read:.5},"nano-gpt/anthropic/claude-sonnet-5:thinking":{input:2,output:10,cache_read:.2,cache_write:2.5},"nano-gpt/anthropic/claude-sonnet-4.6":{input:3,output:15,cache_read:.3},"nano-gpt/anthropic/claude-opus-4.7:thinking":{input:5,output:25,cache_read:.5},"nano-gpt/anthropic/claude-opus-5.5":{input:4,output:20,cache_read:.2,cache_write:5},"nano-gpt/anthropic/claude-opus-4.1:thinking":{input:15,output:75,cache_read:1.5},"nano-gpt/anthropic/claude-sonnet-4:thinking":{input:3,output:15,cache_read:.3},"nano-gpt/anthropic/claude-opus-4:thinking":{input:15,output:75,cache_read:1.5},"nano-gpt/anthropic/claude-opus-4:thinking:8192":{input:15,output:75,cache_read:1.5},"nano-gpt/anthropic/claude-opus-4":{input:15,output:75,cache_read:1.5},"nano-gpt/anthropic/claude-opus-4.1:thinking:32768":{input:15,output:75,cache_read:1.5},"nano-gpt/cohere/command-r-plus-08-2024":{input:2.856,output:14.246,cache_read:1.428},"nano-gpt/deepseek/deepseek-v4-flash:thinking":{input:.14,output:.28,cache_read:.0028},"nano-gpt/deepseek/deepseek-v4-flash-0731":{input:.05,output:.16,cache_read:.013},"nano-gpt/deepseek/deepseek-v4.1-flash":{input:.13,output:.52,cache_read:.006},"nano-gpt/deepseek/deepseek-v4.1-flash:thinking":{input:.13,output:.52,cache_read:.006},"nano-gpt/deepseek/deepseek-v4-flash-vision-exp":{input:.22,output:.66,cache_read:.007},"nano-gpt/deepseek/deepseek-v3.2:thinking":{input:.28,output:.42,cache_read:.14},"nano-gpt/deepseek/deepseek-latest":{input:1.1,output:2.5,cache_read:.04},"nano-gpt/deepseek/deepseek-v4-pro:thinking":{input:1.1,output:2.2,cache_read:.11},"nano-gpt/deepseek/deepseek-v4-pro-0813:thinking":{input:1.1,output:2.5,cache_read:.04},"nano-gpt/deepseek/deepseek-v4-pro-0813":{input:1.1,output:2.5,cache_read:.04},"nano-gpt/deepseek/deepseek-v4-flash-0731:thinking":{input:.05,output:.16,cache_read:.013},"nano-gpt/deepseek/deepseek-v4-pro":{input:1.1,output:2.2,cache_read:.11},"nano-gpt/deepseek/deepseek-v4-flash-latest":{input:.05,output:.16,cache_read:.013},"nano-gpt/deepseek/deepseek-v3.2":{input:.28,output:.42,cache_read:.14},"nano-gpt/deepseek/deepseek-v4-flash":{input:.14,output:.28,cache_read:.0028},"nano-gpt/baseten/Kimi-K2-Instruct-FP4":{input:.4,output:1.8,cache_read:.2},"nano-gpt/unbiased/pareto":{input:2.5,output:7.5,cache_read:.25},"nano-gpt/lightonai/LightOnOCR-2-1B":{input:.1785,output:.3465},"nano-gpt/abacusai/Dracarys-72B-Instruct":{input:.493,output:.493,cache_read:.2465},"nano-gpt/shisa-ai/shisa-v2.1-llama3.3-70b":{input:.5,output:.5,cache_read:.25},"nano-gpt/shisa-ai/shisa-v2-llama3.3-70b":{input:.5,output:.5,cache_read:.25},"nano-gpt/Steelskull/L3.3-MS-Nevoria-70b":{input:.493,output:.493,cache_read:.2465},"nano-gpt/Steelskull/L3.3-Cu-Mai-R1-70b":{input:.493,output:.493,cache_read:.2465},"nano-gpt/Steelskull/L3.3-Nevoria-R1-70b":{input:.493,output:.493,cache_read:.2465},"nano-gpt/Steelskull/L3.3-Electra-R1-70b":{input:.69989,output:.69989,cache_read:.349945},"nano-gpt/tencent/hy3":{input:.066,output:.26,cache_read:.029},"nano-gpt/tencent/hy4-preview":{input:.834,output:2.501,cache_read:.042},"nano-gpt/anthracite-org/magnum-v4-72b":{input:2.006,output:2.992,cache_read:1.003},"nano-gpt/anthracite-org/magnum-v2-72b":{input:2.006,output:2.992,cache_read:1.003},"nano-gpt/meta-llama/llama-4-scout":{input:.085,output:.46,cache_read:.0425},"nano-gpt/meta-llama/llama-4-maverick":{input:.15,output:.6,cache_read:.075},"nano-gpt/meta-llama/llama-3.3-70b-instruct":{input:.05,output:.23,cache_read:.025},"nano-gpt/meta-llama/llama-3.1-8b-instruct":{input:.0544,output:.085,cache_read:.0272},"nano-gpt/meta-llama/llama-3.2-3b-instruct":{input:.0306,output:.0493,cache_read:.0153},"nano-gpt/LLM360/K2-Think":{input:.17,output:.68,cache_read:.085},"nano-gpt/deepcogito/cogito-v1-preview-qwen-32B":{input:1.8,output:1.8,cache_read:.9},"nano-gpt/GalrionSoftworks/MN-LooseCannon-12B-v1":{input:.493,output:.493,cache_read:.2465},"nano-gpt/meganova-ai/manta-mini-1.0":{input:.02,output:.16,cache_read:.01},"nano-gpt/meganova-ai/manta-flash-1.0":{input:.02,output:.16,cache_read:.01},"nano-gpt/meganova-ai/manta-pro-1.0":{input:.06,output:.5,cache_read:.03},"nano-gpt/perceptron/perceptron-mk1":{input:.15,output:1.5,cache_read:.075},"nano-gpt/perceptron/perceptron-mk1.5":{input:.15,output:1.5},"nano-gpt/z-ai/glm-4.6v":{input:.3,output:.9,cache_read:.15},"nano-gpt/z-ai/glm-4.6-original":{input:.35,output:1.4,cache_read:.175},"nano-gpt/z-ai/glm-4.5":{input:.3,output:1.3,cache_read:.15},"nano-gpt/z-ai/glm-5v-turbo":{input:1.2,output:4,cache_read:.24},"nano-gpt/z-ai/glm-5.3-flash":{input:.075,output:.25,cache_read:.015},"nano-gpt/z-ai/glm-5.3-flash-uncensored":{input:.2,output:.8,cache_read:.1},"nano-gpt/z-ai/glm-4.6":{input:.35,output:1.4,cache_read:.175},"nano-gpt/z-ai/glm-4.7-flash:thinking":{input:.07,output:.4,cache_read:.035},"nano-gpt/z-ai/glm-5-original:thinking":{input:1,output:3.2,cache_read:.2},"nano-gpt/z-ai/glm-5.3:thinking":{input:1,output:3.2,cache_read:.2},"nano-gpt/z-ai/glm-5":{input:.5,output:2.55,cache_read:.13},"nano-gpt/z-ai/GLM-4.5-Air":{input:.12,output:.8,cache_read:.06},"nano-gpt/z-ai/glm-4.5v":{input:.6,output:1.8,cache_read:.3},"nano-gpt/z-ai/GLM-4.6-turbo:thinking":{input:1,output:3,cache_read:.5},"nano-gpt/z-ai/glm-4.7:thinking":{input:.2,output:.8,cache_read:.1},"nano-gpt/z-ai/glm-5.1:thinking":{input:.75,output:2.6,cache_read:.15},"nano-gpt/z-ai/glm-4.6v-original":{input:.6,output:.9,cache_read:.3},"nano-gpt/z-ai/glm-5v-turbo:thinking":{input:1.2,output:4,cache_read:.24},"nano-gpt/z-ai/GLM-4.6-turbo":{input:1,output:3,cache_read:.5},"nano-gpt/z-ai/GLM-4.5-Air:thinking":{input:.12,output:.8,cache_read:.06},"nano-gpt/z-ai/glm-5.2:thinking":{input:.42,output:1.32,cache_read:.078},"nano-gpt/z-ai/glm-4.7-flash":{input:.07,output:.4,cache_read:.035},"nano-gpt/z-ai/glm-4.7":{input:.2,output:.8,cache_read:.1},"nano-gpt/z-ai/glm-5:thinking":{input:.5,output:2.55,cache_read:.13},"nano-gpt/z-ai/glm-5.2":{input:.42,output:1.32,cache_read:.078},"nano-gpt/z-ai/GLM-4.5:thinking":{input:.3,output:1.3,cache_read:.15},"nano-gpt/z-ai/glm-5.1":{input:.75,output:2.6,cache_read:.15},"nano-gpt/z-ai/glm-4.6:thinking":{input:.35,output:1.4,cache_read:.175},"nano-gpt/z-ai/glm-4.5v:thinking":{input:.6,output:1.8,cache_read:.3},"nano-gpt/z-ai/glm-4.7-original":{input:.6,output:2.2,cache_read:.11},"nano-gpt/z-ai/glm-5-original":{input:1,output:3.2,cache_read:.2},"nano-gpt/z-ai/glm-5-turbo":{input:1.2,output:4,cache_read:.24},"nano-gpt/z-ai/glm-4.7-original:thinking":{input:.6,output:2.2,cache_read:.11},"nano-gpt/z-ai/glm-5.3":{input:1,output:3.2,cache_read:.2},"nano-gpt/z-ai/glm-5.3-flash-cybersecurity":{input:.15,output:.5,cache_read:.075},"nano-gpt/z-ai/glm-latest":{input:1,output:3.2,cache_read:.2},"nano-gpt/inference-net/schematron-v2-small":{input:.05,output:.23,cache_read:.025},"nano-gpt/inference-net/schematron-v2-turbo":{input:.03,output:.15,cache_read:.015},"nano-gpt/thinkingmachines/inkling:thinking":{input:1,output:4.05,cache_read:.17},"nano-gpt/thinkingmachines/Inkling-Small":{input:.5,output:1.2,cache_read:.1},"nano-gpt/thinkingmachines/inkling":{input:1,output:4.05,cache_read:.17},"nano-gpt/thinkingmachines/Inkling-Small:thinking":{input:.5,output:1.2,cache_read:.1},"nano-gpt/meta/muse-spark-1.3":{input:1.25,output:4.25,cache_read:.15},"nano-gpt/meta/muse-glimmer-30b":{input:.35,output:1.5,cache_read:.04},"nano-gpt/meta/muse-spark-1.1":{input:1.25,output:4.25,cache_read:.15},"nano-gpt/meta/muse-spark-1.2":{input:1.25,output:4.25,cache_read:.15},"nano-gpt/meta/muse-spark-1.2-contributor":{input:.1,output:.2,cache_read:.002},"nano-gpt/meta/muse-spark-1.3-contributor":{input:.1,output:.2,cache_read:.002},"nano-gpt/mlabonne/NeuralDaredevil-8B-abliterated":{input:.44,output:.44,cache_read:.22},"nano-gpt/NeverSleep/Lumimaid-v0.2-70B":{input:1,output:1.5,cache_read:.5},"nano-gpt/nanogpt/coding-router:low":{input:.14,output:.28,cache_read:.028},"nano-gpt/nanogpt/coding-router:medium":{input:.14,output:.28,cache_read:.028},"nano-gpt/nanogpt/coding-router":{input:1.1,output:2.2,cache_read:.11},"nano-gpt/nanogpt/coding-router:max":{input:5,output:30,cache_read:.5},"nano-gpt/nanogpt/coding-router:high":{input:1.1,output:2.2,cache_read:.11},"nano-gpt/LatitudeGames/Wayfarer-Large-70B-Llama-3.3":{input:.7,output:.7,cache_read:.35},"nano-gpt/VongolaChouko/Starcannon-Unleashed-12B-v1.0":{input:.493,output:.493,cache_read:.2465},"nano-gpt/arcee-ai/trinity-large-thinking":{input:.25,output:.9,cache_read:.125},"nano-gpt/x-ai/grok-4.20-multi-agent":{input:2,output:6,cache_read:1},"nano-gpt/x-ai/grok-latest":{input:1.6,output:4.8,cache_read:.4},"nano-gpt/x-ai/grok-4.7":{input:1.6,output:4.8,cache_read:.4},"nano-gpt/x-ai/grok-4.3":{input:1.25,output:2.5,cache_read:.2},"nano-gpt/x-ai/grok-4.5":{input:2,output:6,cache_read:.5},"nano-gpt/x-ai/grok-build-0.1":{input:1,output:2,cache_read:.2},"nano-gpt/x-ai/grok-4.20":{input:2,output:6,cache_read:1},"nano-gpt/x-ai/grok-4.6":{input:2,output:6,cache_read:.5},"nano-gpt/Envoid/Llama-3.05-Nemotron-Tenyxchat-Storybreaker-70B":{input:.493,output:.493,cache_read:.2465},"nano-gpt/Envoid/Llama-3.05-NT-Storybreaker-Ministral-70B":{input:.493,output:.493,cache_read:.2465},"nano-gpt/upstage/solar-pro-3":{input:.15,output:.6,cache_read:.015},"nano-gpt/upstage/solar-pro4":{input:.03,output:.12,cache_read:.006},"nano-gpt/upstage/solar-mini4:thinking":{input:.05,output:.2,cache_read:.005},"nano-gpt/upstage/solar-pro4:thinking":{input:.03,output:.12,cache_read:.006},"nano-gpt/upstage/solar-mini4":{input:.05,output:.2,cache_read:.005},"nano-gpt/bytedance/doubao-seed-2.1-turbo":{input:.5,output:2.5,cache_read:.25},"nano-gpt/bytedance/doubao-seed-2.1-pro":{input:1,output:5,cache_read:.5},"nano-gpt/bytedance/doubao-seed-character":{input:.1179,output:.2947,cache_read:.0236,cache_write:.0025},"nano-gpt/liquid/lfm-2.5-2.6b":{input:.1,output:.2,cache_read:.05},"nano-gpt/google/gemini-flash-latest":{input:.75,output:3.75,cache_read:.075,cache_write:.041667},"nano-gpt/google/gemma-4-31b-it":{input:.1,output:.45,cache_read:.05},"nano-gpt/google/gemini-3.1-pro-preview-low":{input:2,output:12,cache_read:.2,cache_write:.375},"nano-gpt/google/gemini-3.5-flash-thinking":{input:1.5,output:9,cache_read:.15,cache_write:.083333},"nano-gpt/google/gemma-4-26b-a4b-it:thinking":{input:.13,output:.4,cache_read:.065},"nano-gpt/google/gemini-flash-lite-latest":{input:.3,output:2.5,cache_read:.03,cache_write:.08333},"nano-gpt/google/gemini-3.6-flash":{input:.75,output:3.75,cache_read:.075,cache_write:.041667},"nano-gpt/google/diffusiongemma":{input:.05,output:.15,cache_read:.025},"nano-gpt/google/gemma-4-26b-a4b-it":{input:.12,output:.38,cache_read:.06},"nano-gpt/google/gemini-3.5-flash-lite":{input:.3,output:2.5,cache_read:.03,cache_write:.08333},"nano-gpt/google/gemma-4-31b-it:thinking":{input:.1,output:.35,cache_read:.05},"nano-gpt/google/gemini-3.1-pro-preview":{input:2,output:12,cache_read:.2,cache_write:.375},"nano-gpt/google/gemini-3.1-pro-preview-high":{input:2,output:12,cache_read:.2,cache_write:.375},"nano-gpt/google/gemma4-31b-splituntied":{input:.1,output:.3,cache_read:.05},"nano-gpt/google/gemini-3.5-flash":{input:1.5,output:9,cache_read:.15,cache_write:.083333},"nano-gpt/google/gemma-4-26b-a4b-it-cybersecurity":{input:.1056,output:.3344,cache_read:.0528},"nano-gpt/google/gemini-3.7-flash":{input:.75,output:3.75,cache_read:.075,cache_write:.041667},"nano-gpt/google/gemini-3.1-pro-preview-customtools":{input:2,output:12,cache_read:.2,cache_write:.375},"nano-gpt/google/gemini-3-flash-preview":{input:.5,output:3,cache_read:.05},"nano-gpt/google/gemini-pro-latest":{input:2,output:12,cache_read:.2,cache_write:.375},"nano-gpt/google/gemini-3.8-flash":{input:.75,output:3.75,cache_read:.075,cache_write:.041667},"nano-gpt/google/gemini-3-flash-preview-thinking":{input:.5,output:3,cache_read:.05},"nano-gpt/google/gemini-3.1-flash-lite":{input:.25,output:1.5,cache_read:.025,cache_write:.08333},"nano-gpt/TEE/gemma-4-31b-it":{input:.15,output:.46,cache_read:.075},"nano-gpt/TEE/qwen3.8-27b":{input:.4,output:3,cache_read:.15},"nano-gpt/TEE/nemotron-3.5-lightning":{input:.08,output:.2,cache_read:.04},"nano-gpt/TEE/glm-5.3-flash":{input:.15,output:.5,cache_read:.03},"nano-gpt/TEE/qwen3.5-27b":{input:.3,output:2.4,cache_read:.15},"nano-gpt/TEE/muse-glimmer-30b":{input:.35,output:1.5,cache_read:.04},"nano-gpt/TEE/kimi-k3":{input:3,output:15,cache_read:1.5},"nano-gpt/TEE/deepseek-v4.1-flash":{input:.65,output:1.45,cache_read:.13},"nano-gpt/TEE/llama3-3-70b":{input:1.75,output:2.75,cache_read:1.75},"nano-gpt/TEE/kimi-k2.6":{input:1.5,output:5.25,cache_read:.375},"nano-gpt/TEE/qwen3.8-27b-uncensored":{input:.3,output:1.5},"nano-gpt/TEE/gemma-4-26b-a4b-uncensored":{input:.15,output:.7,cache_read:.075},"nano-gpt/TEE/gemma4-31b:thinking":{input:.4,output:1,cache_read:.4},"nano-gpt/TEE/gemma4-31b":{input:.4,output:1,cache_read:.4},"nano-gpt/TEE/qwen3.6-35b-a3b":{input:.2,output:1.27,cache_read:.1},"nano-gpt/TEE/glm-5.2:thinking":{input:1.4,output:4.4,cache_read:.7},"nano-gpt/TEE/qwen3.5-397b-a17b":{input:.55,output:3.5,cache_read:.275},"nano-gpt/TEE/glm-5.2":{input:1.4,output:4.4,cache_read:.7},"nano-gpt/TEE/glm-5.1-thinking":{input:1.5,output:5.25,cache_read:.3},"nano-gpt/TEE/glm-5.1":{input:1.5,output:5.25,cache_read:.3},"nano-gpt/TEE/qwen2.5-vl-72b-instruct":{input:.7,output:.7,cache_read:.35},"nano-gpt/TEE/qwen3.6-27b":{input:.32,output:2.7,cache_read:.16},"nano-gpt/TEE/deepseek-v3.2":{input:.5,output:1,cache_read:.25},"nano-gpt/TEE/gpt-oss-120b":{input:2,output:2,cache_read:2},"nano-gpt/TEE/glm-5.3":{input:1.4,output:4.4,cache_read:.26},"nano-gpt/TEE/kimi-k2.7-code":{input:.95,output:4,cache_read:.19},"nano-gpt/EVA-UNIT-01/EVA-Qwen2.5-72B-v0.2":{input:.799,output:.799,cache_read:.3995},"nano-gpt/EVA-UNIT-01/EVA-LLaMA-3.33-70B-v0.0":{input:2.006,output:2.006,cache_read:1.003},"nano-gpt/EVA-UNIT-01/EVA-Qwen2.5-32B-v0.2":{input:.799,output:.799,cache_read:.3995},"nano-gpt/EVA-UNIT-01/EVA-LLaMA-3.33-70B-v0.1":{input:2.006,output:2.006,cache_read:1.003},"nano-gpt/nothingiisreal/L3.1-70B-Celeste-V0.1-BF16":{input:.493,output:.493,cache_read:.2465},"nano-gpt/MarinaraSpaghetti/NemoMix-Unleashed-12B":{input:.493,output:.493,cache_read:.2465},"nano-gpt/pamanseau/OpenReasoning-Nemotron-32B":{input:.1,output:.4,cache_read:.05},"nano-gpt/huihui-ai/DeepSeek-R1-Distill-Qwen-32B-abliterated":{input:1.4,output:1.4,cache_read:.7},"nano-gpt/huihui-ai/Qwen2.5-32B-Instruct-abliterated":{input:.7,output:.7,cache_read:.35},"nano-gpt/huihui-ai/Llama-3.3-70B-Instruct-abliterated":{input:.7,output:.7,cache_read:.35},"nano-gpt/huihui-ai/DeepSeek-R1-Distill-Llama-70B-abliterated":{input:.7,output:.7,cache_read:.35},"nano-gpt/Gryphe/MythoMax-L2-13b":{input:.1003,output:.1003,cache_read:.05015},"nano-gpt/ibm-granite/granite-4.2-8b":{input:.1,output:.15,cache_read:.05},"nano-gpt/TheDrummer/skyfall-36b-v2":{input:.55,output:.8,cache_read:.25},"nano-gpt/TheDrummer/Artemis-v1.1":{input:.1,output:.45,cache_read:.05},"nano-gpt/TheDrummer/Anubis-70B-v1":{input:.31,output:.31,cache_read:.155},"nano-gpt/TheDrummer/Anubis-70B-v1.1":{input:.31,output:.31,cache_read:.155},"nano-gpt/TheDrummer/Cydonia-24B-v4.3":{input:.12,output:.15,cache_read:.06},"nano-gpt/TheDrummer/Magidonia-24B-v4.3":{input:.1003,output:.1207,cache_read:.05015},"nano-gpt/TheDrummer/Cydonia-24B-v4.1":{input:.35,output:.55,cache_read:.16},"nano-gpt/TheDrummer/UnslopNemo-12B-v4.1":{input:.493,output:.493,cache_read:.2465},"nano-gpt/TheDrummer/Cydonia-24B-v2":{input:.1003,output:.1207,cache_read:.05015},"nano-gpt/TheDrummer/Rocinante-12B-v1.1":{input:.408,output:.595,cache_read:.204},"nano-gpt/TheDrummer/Cydonia-24B-v4":{input:.2006,output:.2414,cache_read:.1003},"nano-gpt/deepseek-ai/DeepSeek-V3.1":{input:.2,output:.7,cache_read:.1},"nano-gpt/deepseek-ai/deepseek-v3.2-exp-thinking":{input:.28,output:.42,cache_read:.14},"nano-gpt/deepseek-ai/DeepSeek-R1-0528":{input:.4,output:1.7,cache_read:.2},"nano-gpt/deepseek-ai/DeepSeek-V3.1-Terminus":{input:.25,output:.7,cache_read:.125},"nano-gpt/deepseek-ai/deepseek-v3.2-exp":{input:.28,output:.42,cache_read:.14},"nano-gpt/deepseek-ai/DeepSeek-V3.1:thinking":{input:.2,output:.7,cache_read:.1},"nano-gpt/deepseek-ai/DeepSeek-V3.1-Terminus:thinking":{input:.25,output:.7,cache_read:.125},"nano-gpt/stepfun-ai/step-3.5-flash-2603":{input:.1,output:.3,cache_read:.05},"nano-gpt/stepfun-ai/step-3.5-flash":{input:.1,output:.3,cache_read:.05},"nano-gpt/MiniMaxAI/MiniMax-M1-80k":{input:.6052,output:2.4225,cache_read:.3026},"nano-gpt/mistralai/ministral-8b-2512":{input:.15,output:.15,cache_read:.075},"nano-gpt/mistralai/mistral-small-4-119b-2603:thinking":{input:.4,output:1.4,cache_read:.2},"nano-gpt/mistralai/mistral-medium-3.5":{input:1.5,output:7.5,cache_read:.75},"nano-gpt/mistralai/mistral-small-24b-instruct-2501":{input:.1155,output:.3465},"nano-gpt/mistralai/mixtral-8x22b-instruct-v0.1":{input:2,output:6,cache_read:.2},"nano-gpt/mistralai/mistral-saba":{input:.1989,output:.595,cache_read:.09945},"nano-gpt/mistralai/mistral-medium-3.1":{input:.4,output:2,cache_read:.2},"nano-gpt/mistralai/mistral-small-3.2-24b-instruct":{input:.2,output:.4,cache_read:.1},"nano-gpt/mistralai/mistral-small-4-119b-2603":{input:.4,output:1.4,cache_read:.2},"nano-gpt/mistralai/mistral-large":{input:2.006,output:6.001,cache_read:.2},"nano-gpt/mistralai/mistral-medium-3.5:thinking":{input:1.5,output:7.5,cache_read:.75},"nano-gpt/mistralai/devstral-small-2505":{input:.06,output:.06,cache_read:.03},"nano-gpt/mistralai/devstral-2-123b-instruct-2512":{input:.4,output:1.4,cache_read:.2},"nano-gpt/mistralai/mistral-medium-3":{input:.4,output:2,cache_read:.2},"nano-gpt/mistralai/ministral-14b-instruct-2512":{input:.1,output:.4,cache_read:.05},"nano-gpt/mistralai/ministral-14b-2512":{input:.2,output:.2,cache_read:.1},"nano-gpt/mistralai/mistral-small-3.1-24b-instruct":{input:.1,output:.3,cache_read:.05},"nano-gpt/mistralai/ministral-3b-2512":{input:.1,output:.1,cache_read:.05},"nano-gpt/mistralai/mistral-nemo-instruct-2407":{input:.1003,output:.1207,cache_read:.05015},"nano-gpt/mistralai/codestral-2508":{input:.3,output:.9,cache_read:.15},"nano-gpt/sakana/fugu-max":{input:2,output:6,cache_read:.25},"nano-gpt/sakana/fugu-ultra":{input:5,output:30,cache_read:.5},"nano-gpt/sakana/fugu-ultra-v1.1":{input:5,output:30,cache_read:.5},"nano-gpt/inclusionai/ling-3.0-flash":{input:.075,output:.22,cache_read:.015},"nano-gpt/inclusionai/ling-3.0-flash-vl":{input:.06,output:.18,cache_read:.012},"nano-gpt/inclusionai/ling-3.0-flash:thinking":{input:.075,output:.22,cache_read:.015},"nano-gpt/moonshotai/kimi-k3":{input:2,output:10,cache_read:.2},"nano-gpt/moonshotai/kimi-k2.7-code-highspeed":{input:1.9,output:8,cache_read:.32},"nano-gpt/moonshotai/kimi-k2.6":{input:.5,output:2.6,cache_read:.125},"nano-gpt/moonshotai/kimi-k2.5:thinking":{input:.3,output:1.9,cache_read:.15},"nano-gpt/moonshotai/kimi-k2-thinking":{input:.6,output:2.5,cache_read:.15},"nano-gpt/moonshotai/kimi-k2.5":{input:.3,output:1.9,cache_read:.15},"nano-gpt/moonshotai/kimi-k2-instruct":{input:.4,output:1.8,cache_read:.2},"nano-gpt/moonshotai/kimi-k2.6:thinking":{input:.5,output:2.6,cache_read:.125},"nano-gpt/moonshotai/kimi-k2-instruct-0711":{input:.4,output:1.8,cache_read:.2},"nano-gpt/moonshotai/kimi-latest":{input:2,output:10,cache_read:.2},"nano-gpt/moonshotai/kimi-k2.7-code":{input:.95,output:4,cache_read:.19},"nano-gpt/moonshotai/Kimi-K2-Instruct-0905":{input:.4,output:1.8,cache_read:.2},"nano-gpt/THUDM/GLM-Z1-9B-0414":{input:.2,output:.2,cache_read:.1},"nano-gpt/THUDM/GLM-4-9B-0414":{input:.2,output:.2,cache_read:.1},"nano-gpt/THUDM/GLM-4-32B-0414":{input:.2,output:.2,cache_read:.1},"nano-gpt/nvidia/nemotron-3-nano-30b-a3b":{input:.17,output:.68,cache_read:.085},"nano-gpt/nvidia/nemotron-3.5-lightning":{input:.05,output:.2,cache_read:.01},"nano-gpt/nvidia/Llama-3.3-Nemotron-Super-49B-v1":{input:.15,output:.15,cache_read:.075},"nano-gpt/nvidia/nemotron-3-super-120b-a12b":{input:.05,output:.25,cache_read:.025},"nano-gpt/nvidia/nemotron-3-ultra-550b-a55b":{input:.5,output:2.5,cache_read:.25},"nano-gpt/nvidia/nemotron-3-super-120b-a12b:thinking":{input:.05,output:.25,cache_read:.025},"nano-gpt/nvidia/nemotron-3-ultra-550b-a55b:thinking":{input:.5,output:2.5,cache_read:.25},"nano-gpt/nvidia/nemotron-3.5-content-safety":{input:.05,output:.15,cache_read:.025},"nano-gpt/nvidia/Llama-3.1-Nemotron-70B-Instruct-HF":{input:.357,output:.408,cache_read:.1785},"nano-gpt/nvidia/nemotron-3.5-lightning:thinking":{input:.05,output:.2,cache_read:.01},"nano-gpt/xiaomi/mimo-v2.5-pro:thinking":{input:.435,output:.87,cache_read:.0036,cache_write:0},"nano-gpt/xiaomi/mimo-v2.6-pro":{input:.435,output:.87,cache_read:.0036,cache_write:0},"nano-gpt/xiaomi/mimo-v2.5":{input:.14,output:.28,cache_read:.0028,cache_write:0},"nano-gpt/xiaomi/mimo-v2.6-pro-ultraspeed":{input:4.35,output:8.7,cache_read:.036,cache_write:0},"nano-gpt/xiaomi/mimo-v2.5:thinking":{input:.14,output:.28,cache_read:.0028,cache_write:0},"nano-gpt/xiaomi/mimo-v2.5-pro":{input:.435,output:.87,cache_read:.0036,cache_write:0},"nano-gpt/xiaomi/mimo-v2.6-flash":{input:.14,output:.28,cache_read:.0028,cache_write:0},"nano-gpt/xiaomi/mimo-v2.6-flash-uncensored":{input:.5,output:1.5,cache_read:.275},"nano-gpt/undi95/remm-slerp-l2-13b":{input:.799,output:1.207,cache_read:.3995},"nano-gpt/Salesforce/Llama-xLAM-2-70b-fc-r":{input:2.5,output:2.5,cache_read:1.25},"nano-gpt/minimax/minimax-latest":{input:.3,output:1.2,cache_read:.06},"nano-gpt/minimax/minimax-m2.5":{input:.3,output:1.2,cache_read:.15},"nano-gpt/minimax/minimax-m2.7-turbo":{input:.6,output:2.4,cache_read:.3},"nano-gpt/minimax/minimax-01":{input:.1394,output:1.122,cache_read:.0697},"nano-gpt/minimax/minimax-m2-her":{input:.302,output:1.207,cache_read:.151},"nano-gpt/minimax/minimax-m2.7":{input:.315,output:1.26,cache_read:.1575},"nano-gpt/minimax/minimax-m3:thinking":{input:.3,output:1.2,cache_read:.06},"nano-gpt/minimax/minimax-m3":{input:.3,output:1.2,cache_read:.06},"nano-gpt/minimax/minimax-m2.1":{input:.33,output:1.32,cache_read:.165},"nano-gpt/minimax/minimax-m2":{input:.17,output:1.53,cache_read:.085},"nano-gpt/inflatebot/MN-12B-Mag-Mell-R1":{input:.493,output:.493,cache_read:.2465},"nano-gpt/kitani/clover-1-150b":{input:.15,output:.8},"nano-gpt/soob3123/GrayLine-Qwen3-8B":{input:.3,output:.3,cache_read:.15},"nano-gpt/soob3123/Veiled-Calla-12B":{input:.3,output:.3,cache_read:.15},"nano-gpt/soob3123/amoral-gemma3-27B-v2":{input:.3,output:.3,cache_read:.15},"nano-gpt/stepfun/step-5-preview":{input:1,output:2.7,cache_read:.05},"nano-gpt/stepfun/step-3.7-flash:thinking":{input:.2,output:1.15,cache_read:.04},"nano-gpt/Sao10K/L3.1-70B-Hanami-x1":{input:.493,output:.493,cache_read:.2465},"nano-gpt/Sao10K/L3.1-70B-Euryale-v2.2":{input:.306,output:.357,cache_read:.153},"nano-gpt/Sao10K/L3.3-70B-Euryale-v2.3":{input:.493,output:.493,cache_read:.2465},"nano-gpt/Sao10K/L3-8B-Stheno-v3.2":{input:.2006,output:.2006,cache_read:.1003},"nano-gpt/inception/mercury-2.5-preview":{input:.04,output:.15,cache_read:.004},"nano-gpt/ornith-ai/ornith-1.5-35b-a3b":{input:.1,output:.4,cache_read:.05},"nano-gpt/ornith-ai/ornith-1.5-35b-a3b:thinking":{input:.1,output:.4,cache_read:.05},"nano-gpt/amazon/nova-lite-v1":{input:.0595,output:.238,cache_read:.02975},"nano-gpt/amazon/nova-2-lite-v1":{input:.51,output:4.25,cache_read:.255},"nano-gpt/amazon/nova-pro-v1":{input:.799,output:3.196,cache_read:.3995},"nano-gpt/Doctor-Shotgun/MS3.2-24B-Magnum-Diamond":{input:.493,output:.493,cache_read:.2465},"nano-gpt/aion-labs/aion-2.0":{input:.8,output:1.6,cache_read:.2},"nano-gpt/aion-labs/aion-rp-llama-3.1-8b":{input:.8,output:1.6,cache_read:.4},"nano-gpt/aion-labs/aion-3.0":{input:3,output:6,cache_read:.75},"nano-gpt/aion-labs/aion-3.5":{input:3,output:6,cache_read:.75},"nano-gpt/aion-labs/aion-3.5-mini":{input:.7,output:1.4,cache_read:.18},"nano-gpt/aion-labs/aion-3.0-mini":{input:.7,output:1.4,cache_read:.18},"nano-gpt/qwen/qwen3.5-flash":{input:.1,output:.4,cache_read:.05},"nano-gpt/qwen/qwen3.8-max:thinking":{input:2,output:6,cache_read:.25,cache_write:2.5},"nano-gpt/qwen/qwen3-vl-235b-a22b-instruct":{input:.3,output:1.9,cache_read:.15},"nano-gpt/qwen/qwen3.7-max":{input:2.5,output:7.5,cache_read:.5,cache_write:3.125},"nano-gpt/qwen/qwen3.8-27b":{input:.15,output:.7,cache_read:.04},"nano-gpt/qwen/qwen3-vl-235b-a22b-thinking":{input:.5,output:6,cache_read:.25},"nano-gpt/qwen/qwen3.5-27b":{input:.27,output:2.16,cache_read:.135},"nano-gpt/qwen/qwen3.7-flash:thinking":{input:.03,output:.13,cache_read:.006,cache_write:.038},"nano-gpt/qwen/qwen3-235b-a22b-instruct-2507":{input:.13,output:.5,cache_read:.065},"nano-gpt/qwen/qwen-max":{input:1.5997,output:6.392,cache_read:.79985},"nano-gpt/qwen/qwen3-next-80b-a3b-thinking":{input:.15,output:.65,cache_read:.075},"nano-gpt/qwen/qwen3.8-max":{input:2,output:6,cache_read:.25,cache_write:2.5},"nano-gpt/qwen/qwen3-coder-next":{input:.2,output:1.5,cache_read:.1},"nano-gpt/qwen/qwen3-coder":{input:.13,output:.5,cache_read:.065},"nano-gpt/qwen/qwen3.5-35b-a3b:thinking":{input:.225,output:1.8,cache_read:.1125},"nano-gpt/qwen/qwen3.5-plus":{input:.4,output:2.4,cache_read:.04},"nano-gpt/qwen/qwen3-32b":{input:.1,output:.3,cache_read:.05},"nano-gpt/qwen/qwen-plus":{input:.3995,output:1.2002,cache_read:.19975},"nano-gpt/qwen/qwen3.7-flash":{input:.03,output:.13,cache_read:.006,cache_write:.038},"nano-gpt/qwen/qwen3-max":{input:1.2002,output:6.001,cache_read:.6001},"nano-gpt/qwen/qwen3.8-27b-obliterated:thinking":{input:.25,output:1.5,cache_read:.2},"nano-gpt/qwen/qwen-turbo":{input:.04998,output:.2006,cache_read:.02499},"nano-gpt/qwen/qwen3-coder-30b-a3b-instruct":{input:.1,output:.4,cache_read:.05},"nano-gpt/qwen/qwen3.8-27b:thinking":{input:.15,output:.7,cache_read:.04},"nano-gpt/qwen/qwen3.8-27b-obliterated":{input:.25,output:1.5,cache_read:.2},"nano-gpt/qwen/qwen3.8-omni-flash":{input:.15,output:.47,cache_read:.016},"nano-gpt/qwen/qwen3.8-27b-uncensored":{input:.15,output:1.2,cache_read:.125},"nano-gpt/qwen/qwen3.7-max:thinking":{input:2.5,output:7.5,cache_read:.5,cache_write:3.125},"nano-gpt/qwen/qwen3-235b-a22b":{input:.3,output:.5,cache_read:.15},"nano-gpt/qwen/qwen3.5-122b-a10b":{input:.437,output:3.496,cache_read:.103788},"nano-gpt/qwen/qwen3.8-27b-uncensored:thinking":{input:.15,output:1.2,cache_read:.125},"nano-gpt/qwen/qwen3.6-35b-a3b":{input:.112,output:.8,cache_read:.056},"nano-gpt/qwen/qwen3-next-80b-a3b-instruct":{input:.15,output:.65,cache_read:.075},"nano-gpt/qwen/qwen3-max-2026-01-23":{input:1.2002,output:6.001,cache_read:.6001},"nano-gpt/qwen/qwen3.8-27b-fable":{input:.25,output:1.5,cache_read:.125},"nano-gpt/qwen/qwen3.8-27b-hemmingway":{input:.25,output:1.5,cache_read:.125},"nano-gpt/qwen/qwen3.6-flash":{input:.19,output:1.16,cache_read:.02,cache_write:.24},"nano-gpt/qwen/qwen3-coder-flash":{input:.3,output:1.5,cache_read:.15},"nano-gpt/qwen/qwen3.5-plus:thinking":{input:.4,output:2.4,cache_read:.04},"nano-gpt/qwen/qwen3-coder-plus":{input:1,output:5,cache_read:.5},"nano-gpt/qwen/qwen3.5-9b":{input:.05,output:.15,cache_read:.025},"nano-gpt/qwen/qwen3.5-122b-a10b:thinking":{input:.437,output:3.496,cache_read:.103788},"nano-gpt/qwen/qwen3.5-397b-a17b:thinking":{input:.6,output:3.6,cache_read:.3},"nano-gpt/qwen/qwen3.8-max-prime":{input:4,output:12,cache_read:.5},"nano-gpt/qwen/qwen3.8-flash":{input:.14,output:.42,cache_read:.016,cache_write:.2},"nano-gpt/qwen/qwen3.8-27b-cybersecurity":{input:.1,output:.6,cache_read:.05},"nano-gpt/qwen/qwen-long":{input:.1003,output:.408,cache_read:.05015},"nano-gpt/qwen/qwen3.5-35b-a3b":{input:.225,output:1.8,cache_read:.1125},"nano-gpt/qwen/qwen3.6-max-preview":{input:1.04,output:6.24,cache_read:.52},"nano-gpt/qwen/qwen3-30b-a3b":{input:.1,output:.3,cache_read:.05},"nano-gpt/qwen/qwen3.5-397b-a17b":{input:.6,output:3.6,cache_read:.3},"nano-gpt/qwen/qwen3-8b":{input:.47,output:.47,cache_read:.235},"nano-gpt/qwen/qwen3.5-27b:thinking":{input:.27,output:2.16,cache_read:.135},"nano-gpt/qwen/qwen3.8-27b-queen":{input:.25,output:1.5,cache_read:.125},"nano-gpt/qwen/qwen3-30b-a3b-instruct-2507":{input:.2,output:.5,cache_read:.1},"nano-gpt/qwen/qwen2.5-coder-32b-instruct":{input:.2006,output:.2006,cache_read:.1003},"nano-gpt/qwen/qwen3.7-plus:thinking":{input:.4,output:1.6,cache_read:.08,cache_write:.5},"nano-gpt/qwen/qwen-2.5-72b-instruct":{input:.357,output:.408,cache_read:.1785},"nano-gpt/qwen/qwen3.6-35b-a3b:thinking":{input:.112,output:.8,cache_read:.056},"nano-gpt/qwen/qwen3.6-27b":{input:.203,output:2.24,cache_read:.1015},"nano-gpt/qwen/qwen3.6-plus":{input:.325,output:1.95,cache_read:.0325,cache_write:.40625},"nano-gpt/qwen/qwen3.6-27b:thinking":{input:.203,output:2.24,cache_read:.1015},"nano-gpt/qwen/qwen3-14b":{input:.08,output:.24,cache_read:.04},"nano-gpt/qwen/qwen3.7-plus":{input:.4,output:1.6,cache_read:.08,cache_write:.5},"nano-gpt/qwen/qwen3.5-flash:thinking":{input:.1,output:.4,cache_read:.05},"nano-gpt/qwen/qwen3.8-max-0902":{input:2,output:6,cache_read:.17,cache_write:2.5},"nano-gpt/failspy/Meta-Llama-3-70B-Instruct-abliterated-v3.5":{input:.7,output:.7,cache_read:.35},"nano-gpt/openai/gpt-5.4":{input:2.5,output:15,cache_read:.25},"nano-gpt/openai/gpt-3.5-turbo":{input:.5,output:1.5},"nano-gpt/openai/gpt-terra-latest":{input:2,output:12,cache_read:.2,cache_write:2.5},"nano-gpt/openai/gpt-6-astra-pro":{input:10,output:50,cache_read:1,cache_write:12.5},"nano-gpt/openai/o3-pro-2025-06-10":{input:22,output:88,cache_read:11},"nano-gpt/openai/gpt-5.4-nano":{input:.2,output:1.25,cache_read:.02},"nano-gpt/openai/gpt-5.2-codex":{input:1.75,output:14,cache_read:.175},"nano-gpt/openai/gpt-5.1-codex":{input:1.25,output:10,cache_read:.125},"nano-gpt/openai/gpt-4o":{input:2.5,output:10,cache_read:1.25},"nano-gpt/openai/gpt-chat-latest":{input:2,output:10,cache_read:.2,cache_write:2.5},"nano-gpt/openai/gpt-5.6-sol-pro":{input:2,output:10,cache_read:.2,cache_write:2.5},"nano-gpt/openai/gpt-5-mini":{input:.25,output:2,cache_read:.025},"nano-gpt/openai/o4-mini":{input:1.1,output:4.4,cache_read:.55},"nano-gpt/openai/o3-mini":{input:1.1,output:4.4,cache_read:.55},"nano-gpt/openai/gpt-5.3-codex":{input:1.75,output:14,cache_read:.175},"nano-gpt/openai/gpt-4.1-nano":{input:.1,output:.4,cache_read:.025},"nano-gpt/openai/gpt-5-nano":{input:.05,output:.4,cache_read:.005},"nano-gpt/openai/o1":{input:15,output:60,cache_read:7.5},"nano-gpt/openai/gpt-latest":{input:10,output:50,cache_read:1,cache_write:12.5},"nano-gpt/openai/gpt-5-pro":{input:15,output:120,cache_read:1.5},"nano-gpt/openai/gpt-4o-2024-08-06":{input:2.5,output:10,cache_read:1.25},"nano-gpt/openai/gpt-6-astra":{input:10,output:50,cache_read:1,cache_write:12.5},"nano-gpt/openai/gpt-luna-latest":{input:.1,output:.5,cache_read:.01,cache_write:.125},"nano-gpt/openai/gpt-5.6-luna-pro":{input:.2,output:1.2,cache_read:.02,cache_write:.25},"nano-gpt/openai/gpt-5.1":{input:1.25,output:10,cache_read:.125},"nano-gpt/openai/gpt-4o-mini":{input:.15,output:.6,cache_read:.075},"nano-gpt/openai/gpt-oss-20b":{input:.2,output:.3},"nano-gpt/openai/gpt-oss-safeguard-20b":{input:.075,output:.3},"nano-gpt/openai/o3-mini-high":{input:1.1,output:4.4,cache_read:.55},"nano-gpt/openai/gpt-sol-latest":{input:2,output:10,cache_read:.2,cache_write:2.5},"nano-gpt/openai/gpt-6-sol-pro":{input:2,output:10,cache_read:.2,cache_write:2.5},"nano-gpt/openai/gpt-astra-latest":{input:10,output:50,cache_read:1,cache_write:12.5},"nano-gpt/openai/gpt-5.4-mini":{input:.75,output:4.5,cache_read:.075},"nano-gpt/openai/gpt-5.6-luna":{input:.2,output:1.2,cache_read:.02,cache_write:.25},"nano-gpt/openai/gpt-5.1-codex-max":{input:2.5,output:20,cache_read:.25},"nano-gpt/openai/gpt-5.2":{input:1.75,output:14,cache_read:.175},"nano-gpt/openai/gpt-5.5":{input:5,output:30,cache_read:.5},"nano-gpt/openai/gpt-4.1":{input:2,output:8,cache_read:.5},"nano-gpt/openai/gpt-4o-2024-11-20":{input:2.5,output:10,cache_read:1.25},"nano-gpt/openai/o3-mini-low":{input:1.1,output:4.4,cache_read:.55},"nano-gpt/openai/gpt-4.1-mini":{input:.4,output:1.6,cache_read:.1},"nano-gpt/openai/gpt-5.6-terra-pro":{input:2,output:12,cache_read:.2,cache_write:2.5},"nano-gpt/openai/gpt-6-luna":{input:.1,output:.5,cache_read:.01,cache_write:.125},"nano-gpt/openai/o4-mini-high":{input:1.1,output:4.4,cache_read:.55},"nano-gpt/openai/gpt-6-luna-pro":{input:.1,output:.5,cache_read:.01,cache_write:.125},"nano-gpt/openai/gpt-5.6-terra":{input:2,output:12,cache_read:.2,cache_write:2.5},"nano-gpt/openai/gpt-4-turbo":{input:10,output:30},"nano-gpt/openai/gpt-oss-120b":{input:.35,output:.75},"nano-gpt/openai/gpt-5.1-codex-mini":{input:.25,output:2,cache_read:.025},"nano-gpt/openai/o3":{input:2,output:8,cache_read:1},"nano-gpt/openai/gpt-5":{input:1.25,output:10,cache_read:.125},"nano-gpt/openai/gpt-5.6-sol":{input:2,output:10,cache_read:.2,cache_write:2.5},"nano-gpt/openai/gpt-5.1-2025-11-13":{input:1.25,output:10,cache_read:.125},"nano-gpt/openai/gpt-6-sol":{input:2,output:10,cache_read:.2,cache_write:2.5},"nano-gpt/openai/o1-pro":{input:150,output:600,cache_read:75},"nano-gpt/microsoft/wizardlm-2-8x22b":{input:.493,output:.493,cache_read:.2465},"nano-gpt/NousResearch/hermes-3-llama-3.1-70b":{input:.408,output:.408,cache_read:.204},"nano-gpt/NousResearch/hermes-4-405b":{input:.3,output:1.2,cache_read:.15},"nano-gpt/NousResearch/hermes-4-405b:thinking":{input:.3,output:1.2,cache_read:.15},"nano-gpt/ReadyArt/MS3.2-The-Omega-Directive-24B-Unslop-v2.0":{input:.5,output:.5,cache_read:.25},"abliteration-ai/abliterated-model-large-v2":{input:5,output:5,cache_read:.5},"abliteration-ai/abliterated-model":{input:3,output:3,cache_read:.3},"abliteration-ai/abliterated-model-large":{input:5,output:5,cache_read:.5},"crof/gemma-4-31b-it":{input:.1,output:.3,cache_read:.02},"crof/qwen3.8-27b":{input:.2,output:1.5,cache_read:.03},"crof/kimi-k3-eco":{input:1,output:4,cache_read:.1},"crof/glm-5.3-flash":{input:.07,output:.22,cache_read:.01},"crof/deepseek-v4-flash-0731":{input:.08,output:.1,cache_read:.003},"crof/kimi-k3":{input:2,output:8,cache_read:.25},"crof/deepseek-v4-flash-vision-exp":{input:.08,output:.2,cache_read:.007},"crof/kimi-k2.6":{input:.5,output:1.99,cache_read:.05},"crof/greg-2-super":{input:1.5,output:5,cache_read:.25},"crof/deepseek-v4-pro-0813":{input:.35,output:.8,cache_read:.01},"crof/mimo-v2.5-pro":{input:.4,output:.8,cache_read:.003,tiers:[{input:2,output:6,cache_read:.4,tier:{type:"context",size:256e3}}],context_over_200k:{input:2,output:6,cache_read:.4}},"crof/greg-rp":{input:.1,output:.3,cache_read:.02},"crof/qwen3.5-9b":{input:.04,output:.15,cache_read:.008},"crof/qwen3.5-397b-a17b":{input:.35,output:1.75,cache_read:.07},"crof/glm-5.2":{input:.3,output:1.05,cache_read:.05},"crof/glm-5.1":{input:.45,output:2.15,cache_read:.08,cache_write:0},"crof/deepseek-v4-pro":{input:.35,output:.8,cache_read:.003},"crof/qwen3.6-27b":{input:.2,output:1.5,cache_read:.04},"crof/greg-2-ultra":{input:3,output:10,cache_read:.5},"crof/deepseek-v3.2":{input:.18,output:.35,cache_read:.04},"crof/glm-5.3":{input:.4,output:1.4,cache_read:.06},"crof/kimi-k2.7-code":{input:.55,output:2.25,cache_read:.05},"crof/greg-1-mini":{input:.07,output:.15,cache_read:.01},"crof/deepseek-v4-flash":{input:.12,output:.21,cache_read:.003},"cloudferro-sherlock/meta-llama/Llama-3.3-70B-Instruct":{input:2.92,output:2.92},"cloudferro-sherlock/MiniMaxAI/MiniMax-M2.5":{input:.3,output:1.2},"cloudferro-sherlock/openai/gpt-oss-120b":{input:2.92,output:2.92},"cloudferro-sherlock/speakleash/Bielik-11B-v2.6-Instruct":{input:.67,output:.67},"cloudferro-sherlock/speakleash/Bielik-11B-v3.0-Instruct":{input:.67,output:.67},"anthropic/claude-haiku-4-5":{input:1,output:5,cache_read:.1,cache_write:1.25},"anthropic/claude-opus-4-5":{input:5,output:25,cache_read:.5,cache_write:6.25},"anthropic/claude-sonnet-4-5":{input:3,output:15,cache_read:.3,cache_write:3.75},"anthropic/claude-opus-5-5":{input:4,output:20,cache_read:.2,cache_write:5},"anthropic/claude-fable-5-1":{input:10,output:50,cache_read:.25,cache_write:12.5},"anthropic/claude-opus-4-5-20251101":{input:5,output:25,cache_read:.5,cache_write:6.25},"anthropic/claude-opus-5":{input:5,output:25,cache_read:.5,cache_write:6.25},"anthropic/claude-fable-5":{input:10,output:50,cache_read:1,cache_write:12.5},"anthropic/claude-opus-4-8":{input:5,output:25,cache_read:.5,cache_write:6.25},"anthropic/claude-sonnet-4-5-20250929":{input:3,output:15,cache_read:.3,cache_write:3.75},"anthropic/claude-sonnet-5":{input:2,output:10,cache_read:.2,cache_write:2.5},"anthropic/claude-opus-4-6":{input:5,output:25,cache_read:.5,cache_write:6.25},"anthropic/claude-haiku-4-5-20251001":{input:1,output:5,cache_read:.1,cache_write:1.25},"anthropic/claude-sonnet-4-6":{input:3,output:15,cache_read:.3,cache_write:3.75},"anthropic/claude-opus-4-7":{input:5,output:25,cache_read:.5,cache_write:6.25},"tinfoil/gpt-oss-safeguard-120b":{input:.15,output:.6},"tinfoil/glm-5-3-flash":{input:.4,output:1.25,cache_read:.1},"tinfoil/kimi-k3":{input:4,output:20,cache_read:.8},"tinfoil/llama3-3-70b":{input:1.75,output:2.75},"tinfoil/gemma4-31b":{input:.4,output:1},"tinfoil/glm-5-3":{input:1.8,output:5.75,cache_read:.45},"tinfoil/deepseek-v4-1-flash":{input:.65,output:1.45,cache_read:.13},"tinfoil/nomic-embed-text":{input:.05,output:0},"tinfoil/gpt-oss-120b":{input:.15,output:.6},"cohere/command-r-08-2024":{input:.15,output:.6},"cohere/command-a-translate-08-2025":{input:2.5,output:10},"cohere/command-r7b-arabic-02-2025":{input:.0375,output:.15},"cohere/command-a-plus-05-2026":{input:2.5,output:10},"cohere/command-a-03-2025":{input:2.5,output:10},"cohere/command-r7b-12-2024":{input:.0375,output:.15},"cohere/command-r-plus-08-2024":{input:2.5,output:10},"cohere/command-a-vision-07-2025":{input:2.5,output:10},"cohere/command-a-reasoning-08-2025":{input:2.5,output:10},"deepseek/deepseek-v4-flash-vision-exp":{input:.15,output:.6,reasoning:.6,cache_read:.003},"deepseek/deepseek-flash":{input:.15,output:.6,reasoning:.6,cache_read:.003},"deepseek/deepseek-v4-pro":{input:.435,output:.87,reasoning:.87,cache_read:.003625},"deepseek/deepseek-v4-flash":{input:.15,output:.6,reasoning:.6,cache_read:.003},"baseten/thinkingmachines/inkling-small":{input:.5,output:1.2,cache_read:.1},"baseten/thinkingmachines/inkling":{input:1,output:4.05},"baseten/deepseek-ai/DeepSeek-V3.1":{input:.5,output:1.5},"baseten/deepseek-ai/DeepSeek-V4-Flash-0731":{input:.13,output:.26,cache_read:.028},"baseten/deepseek-ai/DeepSeek-V4-Pro-0813":{input:1.32,output:3.96},"baseten/deepseek-ai/DeepSeek-V4.1-Flash":{input:.3,output:1.2,cache_read:.03},"baseten/deepseek-ai/DeepSeek-V4-Pro":{input:1.74,output:3.48,cache_read:.145},"baseten/MiniMaxAI/MiniMax-M2.5":{input:.3,output:1.2},"baseten/moonshotai/Kimi-K2.6":{input:.95,output:4,cache_read:.16},"baseten/moonshotai/Kimi-K3":{input:3,output:15},"baseten/moonshotai/Kimi-K2.7-Code":{input:.95,output:4,cache_read:.16},"baseten/moonshotai/Kimi-K2.5":{input:.6,output:3,cache_read:.12},"baseten/zai-org/GLM-5.1":{input:1.3,output:4.3,cache_read:.26},"baseten/zai-org/GLM-5.2":{input:1.4,output:4.4,cache_read:.3},"baseten/zai-org/GLM-4.7":{input:.6,output:2.2,cache_read:.12},"baseten/zai-org/GLM-5.2-Fast":{input:2.1,output:6.6,cache_read:.21},"baseten/zai-org/GLM-5.3-Fast":{input:2.1,output:6.6},"baseten/zai-org/GLM-5":{input:.95,output:3.15,cache_read:.2},"baseten/zai-org/GLM-5.3-Flash":{input:.15,output:.5},"baseten/zai-org/GLM-5.3":{input:1.4,output:4.4,cache_read:.14},"baseten/nvidia/Nemotron-120B-A12B":{input:.3,output:.75,cache_read:.06},"baseten/nvidia/NVIDIA-Nemotron-3-Ultra-550B-A55B":{input:.6,output:2.4,cache_read:.12},"baseten/openai/gpt-oss-120b":{input:.1,output:.5},"nearai/anthropic/claude-haiku-4-5":{input:1,output:5,cache_read:.1,cache_write:1.25},"nearai/anthropic/claude-sonnet-4-5":{input:3,output:15,cache_read:.3,cache_write:3.75},"nearai/anthropic/claude-opus-4-6":{input:5,output:25,cache_read:.5,cache_write:6.25},"nearai/anthropic/claude-sonnet-4-6":{input:3,output:15,cache_read:.3,cache_write:3.75},"nearai/anthropic/claude-opus-4-7":{input:5,output:25,cache_read:.5,cache_write:6.25},"nearai/black-forest-labs/FLUX.2-klein-4B":{input:1,output:1},"nearai/google/gemini-3.5-flash":{input:1.5,output:9,cache_read:.15,input_audio:1.5},"nearai/google/gemini-2.5-pro":{input:1.25,output:10,cache_read:.125,tiers:[{input:2.5,output:15,cache_read:.25,tier:{type:"context",size:2e5}}],context_over_200k:{input:2.5,output:15,cache_read:.25}},"nearai/google/gemini-2.5-flash":{input:.3,output:2.5,cache_read:.03,input_audio:1},"nearai/google/gemini-2.5-flash-lite":{input:.1,output:.4,cache_read:.01,input_audio:.3},"nearai/google/gemini-3.1-flash-lite":{input:.25,output:1.5,cache_read:.025,input_audio:.5},"nearai/Qwen/Qwen3-Reranker-0.6B":{input:.01,output:.01},"nearai/Qwen/Qwen3-VL-30B-A3B-Instruct":{input:.15,output:.55},"nearai/Qwen/Qwen3-Embedding-0.6B":{input:.01,output:.01},"nearai/Qwen/Qwen3.6-35B-A3B-FP8":{input:.17,output:1.1,cache_read:.056},"nearai/zai-org/GLM-5.1-FP8":{input:1.4,output:4.4},"nearai/openai/gpt-5.4":{input:2.5,output:15,cache_read:.25,tiers:[{input:5,output:22.5,cache_read:.5,tier:{type:"context",size:272e3}}],context_over_200k:{input:5,output:22.5,cache_read:.5}},"nearai/openai/gpt-5.4-nano":{input:.2,output:1.25,cache_read:.02},"nearai/openai/whisper-large-v3":{input:.01,output:.01},"nearai/openai/gpt-5-mini":{input:.25,output:2,cache_read:.025},"nearai/openai/o4-mini":{input:1.1,output:4.4,cache_read:.275},"nearai/openai/o3-mini":{input:1.1,output:4.4,cache_read:.55},"nearai/openai/gpt-4.1-nano":{input:.1,output:.4,cache_read:.025},"nearai/openai/gpt-5-nano":{input:.05,output:.4,cache_read:.005},"nearai/openai/gpt-5.1":{input:1.25,output:10,cache_read:.125},"nearai/openai/gpt-5.4-mini":{input:.75,output:4.5,cache_read:.075},"nearai/openai/gpt-5.2":{input:1.75,output:14,cache_read:.175},"nearai/openai/gpt-5.5":{input:5,output:30,cache_read:.5,tiers:[{input:10,output:45,cache_read:1,tier:{type:"context",size:272e3}}],context_over_200k:{input:10,output:45,cache_read:1}},"nearai/openai/gpt-4.1":{input:2,output:8,cache_read:.5},"nearai/openai/gpt-4.1-mini":{input:.4,output:1.6,cache_read:.1},"nearai/openai/o3":{input:2,output:8,cache_read:.5},"nearai/openai/gpt-5":{input:1.25,output:10,cache_read:.125},"wandb/JetBrains/Mellum2-12B-A2.5B-Instruct":{input:.05,output:.1,cache_read:.05},"wandb/meta-llama/Llama-3.1-70B-Instruct":{input:.8,output:.8,cache_read:.8},"wandb/meta-llama/Llama-3.1-8B-Instruct":{input:.22,output:.22,cache_read:.22},"wandb/meta-llama/Llama-3.3-70B-Instruct":{input:.71,output:.71,cache_read:.71},"wandb/google/gemma-4-31B-it":{input:.1,output:.34,cache_read:.1},"wandb/google/gemma-4-26B-A4B-it":{input:.1,output:.3,cache_read:.05},"wandb/Qwen/Qwen3.8-27B":{input:.4,output:3,cache_read:.15},"wandb/Qwen/Qwen3-30B-A3B-Instruct-2507":{input:.1,output:.3,cache_read:.1},"wandb/Qwen/Qwen3.6-35B-A3B":{input:.25,output:1.25,cache_read:.25},"wandb/Qwen/Qwen3.5-35B-A3B":{input:.25,output:1.25,cache_read:.25},"wandb/Qwen/Qwen3.6-27B":{input:.6,output:3.6,cache_read:.12},"wandb/ibm-granite/granite-4.2-8b":{input:.1,output:.15,cache_read:.05},"wandb/ibm-granite/granite-4.1-8b":{input:.05,output:.1,cache_read:.05},"wandb/deepseek-ai/DeepSeek-V3.1":{input:.55,output:1.65,cache_read:.55},"wandb/deepseek-ai/DeepSeek-V4-Flash-0731":{input:.13,output:.28,cache_read:.07},"wandb/deepseek-ai/DeepSeek-V4-Pro-0813":{input:1.31,output:3.96,cache_read:.044},"wandb/deepseek-ai/DeepSeek-V4.1-Flash":{input:.2,output:.65,cache_read:.03},"wandb/deepseek-ai/DeepSeek-V4-Flash":{input:.14,output:.28,cache_read:.07},"wandb/deepseek-ai/DeepSeek-V4-Pro":{input:1.15,output:2.55,cache_read:.2},"wandb/MiniMaxAI/MiniMax-M3":{input:.23,output:.96,cache_read:.05},"wandb/moonshotai/Kimi-K2.6":{input:.65,output:3.41,cache_read:.15},"wandb/moonshotai/Kimi-K2.7-Code":{input:.71,output:3.5,cache_read:.15},"wandb/zai-org/GLM-5.2":{input:.76,output:2.42,cache_read:.14},"wandb/zai-org/GLM-5.3-Flash":{input:.15,output:.5,cache_read:.05},"wandb/nvidia/NVIDIA-Nemotron-3.5-Lightning-30B-A3B":{input:.07,output:.2,cache_read:.04},"wandb/nvidia/NVIDIA-Nemotron-3-Ultra-550B-A55B":{input:.5,output:2.15,cache_read:.1},"wandb/openai/gpt-oss-20b":{input:.03,output:.13,cache_read:.03},"wandb/openai/gpt-oss-120b":{input:.03,output:.17,cache_read:.03},"wandb/OpenPipe/Qwen3-14B-Instruct":{input:.05,output:.22,cache_read:.05},"subconscious/subconscious/tim-qwen3.6-27b":{input:.3,output:3,cache_read:.15},"subconscious/subconscious/glm-5.2":{input:1.4,output:4.4,cache_read:.26},"databricks/databricks-claude-opus-4-5":{input:5,output:25,cache_read:.5,cache_write:6.25},"databricks/databricks-gpt-5-6-terra":{input:2.5,output:15,cache_read:.25,tiers:[{input:5,output:22.5,cache_read:.5,tier:{type:"context",size:272e3}}],context_over_200k:{input:5,output:22.5,cache_read:.5}},"databricks/databricks-kimi-k2-7-code":{input:.95,output:4,cache_read:.19},"databricks/databricks-glm-5-2":{input:1.4,output:4.4,cache_read:.26},"databricks/databricks-gemini-3-1-flash-lite":{input:.25,output:1.5,cache_read:.025,input_audio:.5},"databricks/databricks-gpt-5-mini":{input:.25,output:2,cache_read:.025},"databricks/databricks-gemini-3-flash":{input:.5,output:3,cache_read:.05,input_audio:1},"databricks/databricks-claude-opus-4-7":{input:5,output:25,cache_read:.5,cache_write:6.25},"databricks/databricks-gpt-oss-20b":{input:.05,output:.2},"databricks/databricks-gpt-5-4-mini":{input:.75,output:4.5,cache_read:.075},"databricks/databricks-gemini-3-pro":{input:2,output:12,cache_read:.2,tiers:[{input:4,output:18,cache_read:.4,tier:{type:"context",size:2e5}}],context_over_200k:{input:4,output:18,cache_read:.4}},"databricks/databricks-gpt-5-2":{input:1.75,output:14,cache_read:.175},"databricks/databricks-claude-haiku-4-5":{input:1,output:5,cache_read:.1,cache_write:1.25},"databricks/databricks-gemini-3-1-pro":{input:2,output:12,cache_read:.2,tiers:[{input:4,output:18,cache_read:.4,tier:{type:"context",size:2e5}}],context_over_200k:{input:4,output:18,cache_read:.4}},"databricks/databricks-claude-opus-4-6":{input:5,output:25,cache_read:.5,cache_write:6.25},"databricks/databricks-gpt-5-6-sol":{input:5,output:30,cache_read:.5,tiers:[{input:10,output:45,cache_read:1,tier:{type:"context",size:272e3}}],context_over_200k:{input:10,output:45,cache_read:1}},"databricks/databricks-claude-opus-4-1":{input:15,output:75,cache_read:1.5,cache_write:18.75},"databricks/databricks-gpt-oss-120b":{input:.072,output:.28},"databricks/databricks-gemini-2-5-pro":{input:1.25,output:10,cache_read:.125,tiers:[{input:2.5,output:15,cache_read:.25,tier:{type:"context",size:2e5}}],context_over_200k:{input:2.5,output:15,cache_read:.25}},"databricks/databricks-gemini-2-5-flash":{input:.3,output:2.5,cache_read:.03,input_audio:1},"databricks/databricks-claude-sonnet-4-5":{input:3,output:15,cache_read:.3,cache_write:3.75},"databricks/databricks-gpt-5-4":{input:2.5,output:15,cache_read:.25,tiers:[{input:5,output:22.5,cache_read:.5,tier:{type:"context",size:272e3}}],context_over_200k:{input:5,output:22.5,cache_read:.5}},"databricks/databricks-gpt-5-4-nano":{input:.2,output:1.25,cache_read:.02},"databricks/databricks-claude-sonnet-4-6":{input:3,output:15,cache_read:.3,cache_write:3.75},"databricks/databricks-gpt-5-6-luna":{input:1,output:6,cache_read:.1,tiers:[{input:2,output:9,cache_read:.2,tier:{type:"context",size:272e3}}],context_over_200k:{input:2,output:9,cache_read:.2}},"databricks/databricks-claude-sonnet-4":{input:3,output:15,cache_read:.3,cache_write:3.75},"databricks/databricks-gpt-5-1":{input:1.25,output:10,cache_read:.125},"databricks/databricks-gpt-5-nano":{input:.05,output:.4,cache_read:.005},"databricks/databricks-gpt-5":{input:1.25,output:10,cache_read:.125},"databricks/databricks-gpt-5-5":{input:5,output:30,cache_read:.5,tiers:[{input:10,output:45,cache_read:1,tier:{type:"context",size:272e3}}],context_over_200k:{input:10,output:45,cache_read:1}},"umans-ai/umans-glm-5.3-flash":{input:.15,output:.5,cache_read:.03},"umans-ai/umans-flash":{input:.15,output:1,cache_read:.05},"umans-ai/umans-deepseek-v4-pro-0813":{input:1.32,output:3.96,cache_read:.044},"umans-ai/umans-deepseek-v4-flash-0731":{input:.14,output:.28,cache_read:.028},"umans-ai/umans-kimi-k3":{input:3,output:15,cache_read:.3},"umans-ai/umans-coder":{input:.15,output:.5,cache_read:.03},"siliconflow/ByteDance-Seed/Seed-OSS-36B-Instruct":{input:.21,output:.57},"siliconflow/nex-agi/Nex-N2-Pro":{input:.5,output:2.5,cache_read:.25},"siliconflow/tencent/Hunyuan-A13B-Instruct":{input:.14,output:.57},"siliconflow/tencent/Hy3":{input:.132,output:.528,cache_read:.033},"siliconflow/meituan-longcat/LongCat-2.0":{input:.75,output:2.95,cache_read:.015},"siliconflow/google/gemma-4-12B-it":{input:.1,output:.3},"siliconflow/google/gemma-4-31B-it":{input:.13,output:.4},"siliconflow/google/gemma-4-26B-A4B-it":{input:.12,output:.4},"siliconflow/Qwen/Qwen3-VL-30B-A3B-Instruct":{input:.29,output:1},"siliconflow/Qwen/Qwen3-VL-8B-Instruct":{input:.18,output:.68},"siliconflow/Qwen/Qwen3-VL-32B-Thinking":{input:.2,output:1.5},"siliconflow/Qwen/Qwen3-30B-A3B-Instruct-2507":{input:.09,output:.3},"siliconflow/Qwen/Qwen3.5-27B":{input:.25,output:2},"siliconflow/Qwen/Qwen3.6-35B-A3B":{input:.2,output:1.6},"siliconflow/Qwen/Qwen3-14B":{input:.07,output:.28},"siliconflow/Qwen/Qwen3-VL-30B-A3B-Thinking":{input:.29,output:1},"siliconflow/Qwen/Qwen3-8B":{input:.06,output:.06},"siliconflow/Qwen/Qwen2.5-72B-Instruct":{input:.59,output:.59},"siliconflow/Qwen/Qwen3-32B":{input:.14,output:.57},"siliconflow/Qwen/Qwen3-Coder-30B-A3B-Instruct":{input:.07,output:.28},"siliconflow/Qwen/Qwen2.5-7B-Instruct":{input:.05,output:.05},"siliconflow/Qwen/Qwen3.5-35B-A3B":{input:.24,output:1.8},"siliconflow/Qwen/Qwen3.5-122B-A10B":{input:.26,output:2.08},"siliconflow/Qwen/Qwen3.5-9B":{input:.1,output:.15},"siliconflow/Qwen/Qwen3.5-397B-A17B":{input:.39,output:2.34},"siliconflow/Qwen/Qwen3.8-2.4T-A95B":{input:2,output:6,cache_read:.25},"siliconflow/Qwen/Qwen3-VL-32B-Instruct":{input:.2,output:.6},"siliconflow/Qwen/Qwen3-Coder-480B-A35B-Instruct":{input:.25,output:1},"siliconflow/Qwen/Qwen3.6-27B":{input:.3,output:3.2},"siliconflow/deepseek-ai/DeepSeek-V3.1":{input:.27,output:1},"siliconflow/deepseek-ai/DeepSeek-V4-Flash-0731":{input:.22,output:.66,cache_read:.014},"siliconflow/deepseek-ai/DeepSeek-R1":{input:.5,output:2.18},"siliconflow/deepseek-ai/DeepSeek-V4-Pro-0813":{input:1.32,output:3.96,cache_read:.044},"siliconflow/deepseek-ai/DeepSeek-V4-Flash":{input:.13,output:.28,cache_read:.028},"siliconflow/deepseek-ai/DeepSeek-V4-Pro":{input:1.50162,output:3.135,cache_read:.135},"siliconflow/deepseek-ai/DeepSeek-V3.2":{input:.27,output:.42,cache_read:.135},"siliconflow/deepseek-ai/DeepSeek-V3":{input:.25,output:1},"siliconflow/deepseek-ai/DeepSeek-V3.1-Terminus":{input:.27,output:1},"siliconflow/deepseek-ai/DeepSeek-V3.2-Exp":{input:.27,output:.41},"siliconflow/deepseek-ai/DeepSeek-V4-Flash-Vision-Exp":{input:.44,output:1.32,cache_read:.028},"siliconflow/stepfun-ai/Step-3.5-Flash":{input:.1,output:.3},"siliconflow/MiniMaxAI/MiniMax-M3":{input:.3,output:1.2,cache_read:.06},"siliconflow/MiniMaxAI/MiniMax-M2.5":{input:.3,output:1.2,cache_read:.03},"siliconflow/inclusionAI/Ling-flash-2.0":{input:.14,output:.57},"siliconflow/moonshotai/Kimi-K2.6":{input:.77,output:3.4,cache_read:.14},"siliconflow/moonshotai/Kimi-K3":{input:2.7,output:13.5,cache_read:.27},"siliconflow/moonshotai/Kimi-K2.7-Code":{input:.85916,output:3.8,cache_read:.17993},"siliconflow/moonshotai/Kimi-K2.5":{input:.45,output:2.25,cache_read:.07},"siliconflow/zai-org/GLM-5.1":{input:1.19,output:3.74,cache_read:.6,cache_write:0},"siliconflow/zai-org/GLM-5.2":{input:1.302,output:4.092,cache_read:.26,cache_write:0},"siliconflow/zai-org/GLM-4.5-Air":{input:.14,output:.86},"siliconflow/zai-org/GLM-5":{input:.95,output:2.55,cache_read:.2},"siliconflow/zai-org/GLM-5.3-Flash":{input:.15,output:.5,cache_read:.03,cache_write:0},"siliconflow/zai-org/GLM-5V-Turbo":{input:1.2,output:4,cache_read:.24,cache_write:0},"siliconflow/zai-org/GLM-5.3":{input:1.4,output:4.4,cache_read:.26,cache_write:0},"siliconflow/openai/gpt-oss-20b":{input:.04,output:.18},"siliconflow/openai/gpt-oss-120b":{input:.05,output:.45},"alibaba-coding-plan/qwen3.7-max":{input:2.5,output:7.5,cache_read:.5,cache_write:3.125},"alibaba-coding-plan/qwen3.6-flash":{input:.1875,output:1.125,cache_write:.234375},"lilac/google/gemma-4-31b-it":{input:.11,output:.35},"lilac/minimaxai/minimax-m3":{input:.28,output:1.1,cache_read:.05},"lilac/moonshotai/kimi-k2.6":{input:.7,output:3.5,cache_read:.2},"lilac/zai-org/glm-5.2":{input:.9,output:3,cache_read:.27},"moonshotai-cn/kimi-k2.7-code":{input:.95,output:4,cache_read:.19},"moonshotai-cn/kimi-k2.6":{input:.95,output:4,cache_read:.16},"moonshotai-cn/kimi-k2.7-code-highspeed":{input:1.9,output:8,cache_read:.38},"moonshotai-cn/kimi-k3":{input:3,output:15,cache_read:.3},"bothub/glm-5.3-flash":{input:.12,output:.44},"bothub/deepseek-v4-flash-0731":{input:.1,output:.28},"bothub/deepseek-v4-pro-0813":{input:1.61,output:4.84},"bothub/gpt-5.6-luna":{input:.06,output:.37},"bothub/muse-spark-1.3-contributor":{input:.1,output:.2},"bothub/glm-5.3":{input:1.72,output:5.41},"privatemode-ai/glm-flash-latest":{input:.8897,output:4.4718,cache_read:.0924},"privatemode-ai/glm-5.3-flash":{input:.8897,output:4.4718,cache_read:.0924},"privatemode-ai/whisper-large-v3":{input:.01618,output:0},"privatemode-ai/kimi-k2.6":{input:1.791,output:8.9436,cache_read:.1733},"privatemode-ai/deepseek-ocr-2":{input:.8897,output:1.4675,cache_read:.0924},"privatemode-ai/qwen3-embedding-4b":{input:.1502,output:0},"privatemode-ai/voxtral-mini-3b":{input:.00462,output:0},"privatemode-ai/kimi-latest":{input:1.791,output:8.9436,cache_read:.1733},"privatemode-ai/gpt-oss-120b":{input:.4969,output:1.9644,cache_read:.0462},"privatemode-ai/glm-5.3":{input:1.791,output:8.9436,cache_read:.1733},"privatemode-ai/glm-latest":{input:1.791,output:8.9436,cache_read:.1733},"llmgateway-providers/consensusprotocol/gemma-4-31b-it":{input:.1,output:.25,cache_read:.01},"llmgateway-providers/consensusprotocol/Qwen3.8-27B":{input:.08,output:.35,cache_read:.05},"llmgateway-providers/consensusprotocol/glm-5.3-flash":{input:.1,output:.25,cache_read:.02},"llmgateway-providers/consensusprotocol/deepseek-v4.1-flash":{input:.2,output:.6,cache_read:.005},"llmgateway-providers/consensusprotocol/gpt-oss-20b":{input:.04,output:.19,cache_read:.01},"llmgateway-providers/consensusprotocol/deepseek-v4-flash":{input:.05,output:.1,cache_read:.01},"llmgateway-providers/deepinfra/gemma-4-31b-it":{input:.13,output:.38},"llmgateway-providers/deepinfra/qwen3-vl-235b-a22b-instruct":{input:.2,output:.88,cache_read:.11},"llmgateway-providers/deepinfra/mimo-v2.5":{input:.4,output:2,cache_read:.08,tiers:[{input:.8,output:4,cache_read:.16,tier:{type:"context",size:256e3}}],context_over_200k:{input:.8,output:4,cache_read:.16}},"llmgateway-providers/deepinfra/qwen3.8-27b":{input:.2,output:2.5,cache_read:.05},"llmgateway-providers/deepinfra/nemotron-3.5-lightning":{input:.08,output:.2},"llmgateway-providers/deepinfra/qwen3.8-2.4t-a95b":{input:2,output:6,cache_read:.2},"llmgateway-providers/deepinfra/muse-glimmer-30b":{input:.3,output:1.2,cache_read:.04},"llmgateway-providers/deepinfra/deepseek-v4.1-flash":{input:.2,output:.6,cache_read:.006},"llmgateway-providers/deepinfra/ling-3.0-flash":{input:.06,output:.18,cache_read:.012},"llmgateway-providers/deepinfra/qwen3-vl-30b-a3b-instruct":{input:.15,output:.6},"llmgateway-providers/deepinfra/gemma-4-26b-a4b-it":{input:.07,output:.34},"llmgateway-providers/deepinfra/nemotron-3-ultra-550b":{input:.5,output:2.2,cache_read:.1},"llmgateway-providers/deepinfra/inkling-small":{input:.45,output:1.2,cache_read:.1},"llmgateway-providers/deepinfra/mimo-v2.5-pro":{input:1,output:3,cache_read:.2,tiers:[{input:2,output:6,cache_read:.4,tier:{type:"context",size:256e3}}],context_over_200k:{input:2,output:6,cache_read:.4}},"llmgateway-providers/deepinfra/qwen3.5-9b":{input:.1,output:.15},"llmgateway-providers/deepinfra/inkling":{input:.95,output:4.05,cache_read:.16},"llmgateway-providers/deepinfra/hy3":{input:.14,output:.58,cache_read:.035},"llmgateway-providers/deepinfra/glm-5.1":{input:1.05,output:3.5,cache_read:.205},"llmgateway-providers/deepinfra/deepseek-v4-pro":{input:1.3,output:2.6,cache_read:.1},"llmgateway-providers/deepinfra/step-3.7-flash":{input:.2,output:1.15,cache_read:.04},"llmgateway-providers/deepinfra/deepseek-v3.2":{input:.26,output:.38,cache_read:.13},"llmgateway-providers/deepinfra/glm-5.3":{input:1.2,output:4,cache_read:.2},"llmgateway-providers/deepinfra/deepseek-v4-flash":{input:.08,output:.18,cache_read:.016},"llmgateway-providers/cerebras/gemma-4-31b-it":{input:.99,output:1.49},"llmgateway-providers/cerebras/qwen3-235b-a22b-instruct-2507":{input:.6,output:1.2},"llmgateway-providers/cerebras/llama-3.3-70b-instruct":{input:.85,output:1.2},"llmgateway-providers/cerebras/glm-4.7":{input:2.25,output:2.75},"llmgateway-providers/cerebras/gpt-oss-120b":{input:.35,output:.75},"llmgateway-providers/groq/gpt-oss-20b":{input:.1,output:.5},"llmgateway-providers/groq/gpt-oss-120b":{input:.15,output:.75},"llmgateway-providers/scx-ai-gp/glm-5.3-flash":{input:.088,output:.25,cache_read:.025},"llmgateway-providers/scx-ai-gp/glm-5.2-fast":{input:2.2,output:6.5,cache_read:.45},"llmgateway-providers/scx-ai-gp/qwen3.8-max":{input:2,output:6,cache_read:.25,cache_write:2.5},"llmgateway-providers/scx-ai-gp/kimi-k3":{input:3.5,output:18,cache_read:.35},"llmgateway-providers/scx-ai-gp/deepseek-v4.1-flash":{input:.15,output:.6,cache_read:.01},"llmgateway-providers/scx-ai-gp/glm-5.2":{input:.88,output:2.55,cache_read:.16},"llmgateway-providers/scx-ai-gp/glm-5.3":{input:1.4,output:4.4,cache_read:.26},"llmgateway-providers/scx-ai-gp/kimi-k2.7-code":{input:.95,output:4,cache_read:.19},"llmgateway-providers/zai/glm-4.6v":{input:.3,output:.9,cache_read:.05},"llmgateway-providers/zai/glm-4.5":{input:.6,output:2.2,cache_read:.11},"llmgateway-providers/zai/glm-5.3-flash":{input:.15,output:.5,cache_read:.03},"llmgateway-providers/zai/glm-4.6":{input:.6,output:2.2,cache_read:.11},"llmgateway-providers/zai/glm-4.5-x":{input:2.2,output:8.9,cache_read:.45},"llmgateway-providers/zai/glm-5":{input:1,output:3.2,cache_read:.2},"llmgateway-providers/zai/glm-4.5-airx":{input:1.1,output:4.5,cache_read:.22},"llmgateway-providers/zai/glm-4.5v":{input:.6,output:1.8,cache_read:.11},"llmgateway-providers/zai/glm-4-32b-0414-128k":{input:.1,output:.1},"llmgateway-providers/zai/glm-4.6v-flashx":{input:.04,output:.4,cache_read:.004},"llmgateway-providers/zai/glm-4.7":{input:.6,output:2.2,cache_read:.11},"llmgateway-providers/zai/glm-5.2":{input:1.4,output:4.4,cache_read:.26},"llmgateway-providers/zai/glm-5.1":{input:1.4,output:4.4,cache_read:.26},"llmgateway-providers/zai/glm-4.7-flashx":{input:.07,output:.4,cache_read:.01},"llmgateway-providers/zai/glm-4.5-air":{input:.2,output:1.1,cache_read:.03},"llmgateway-providers/zai/glm-5.3":{input:1.4,output:4.4,cache_read:.26},"llmgateway-providers/aws-bedrock/claude-haiku-4-5":{input:1,output:5,cache_read:.1,cache_write:1.25},"llmgateway-providers/aws-bedrock/llama-4-maverick-17b-instruct":{input:.24,output:.97},"llmgateway-providers/aws-bedrock/claude-sonnet-4-5":{input:3,output:15,cache_read:.3,cache_write:3.75},"llmgateway-providers/aws-bedrock/claude-fable-5-1":{input:10,output:50,cache_read:.25,cache_write:12.5},"llmgateway-providers/aws-bedrock/llama-4-scout-17b-instruct":{input:.17,output:.66},"llmgateway-providers/aws-bedrock/claude-opus-4-1-20250805":{input:15,output:75,cache_read:1.5,cache_write:18.75},"llmgateway-providers/aws-bedrock/claude-opus-4-5-20251101":{input:5,output:25,cache_read:.5,cache_write:6.25},"llmgateway-providers/aws-bedrock/claude-opus-5":{input:5,output:25,cache_read:.5,cache_write:6.25},"llmgateway-providers/aws-bedrock/claude-fable-5":{input:10,output:50,cache_read:1,cache_write:12.5},"llmgateway-providers/aws-bedrock/claude-opus-4-8":{input:5,output:25,cache_read:.5,cache_write:6.25},"llmgateway-providers/aws-bedrock/claude-sonnet-4-5-20250929":{input:3,output:15,cache_read:.3,cache_write:3.75},"llmgateway-providers/aws-bedrock/claude-sonnet-5":{input:2,output:10,cache_read:.2,cache_write:2.5},"llmgateway-providers/aws-bedrock/claude-opus-4-6":{input:5,output:25,cache_read:.5,cache_write:6.25},"llmgateway-providers/aws-bedrock/grok-4-3":{input:1.25,output:2.5,cache_read:.2,tiers:[{input:2.5,output:5,cache_read:.4,tier:{type:"context",size:2e5}}],context_over_200k:{input:2.5,output:5,cache_read:.4}},"llmgateway-providers/aws-bedrock/claude-haiku-4-5-20251001":{input:1,output:5,cache_read:.1,cache_write:1.25},"llmgateway-providers/aws-bedrock/grok-4-6":{input:2,output:6,cache_read:.5},"llmgateway-providers/aws-bedrock/claude-sonnet-4-6":{input:3,output:15,cache_read:.3,cache_write:3.75},"llmgateway-providers/aws-bedrock/claude-opus-4-7":{input:5,output:25,cache_read:.5,cache_write:6.25},"llmgateway-providers/aws-bedrock/llama-3.1-70b-instruct":{input:.72,output:.72},"llmgateway-providers/google-ai-studio/gemini-3.6-flash":{input:.75,output:3.75,cache_read:.075,cache_write:.08333},"llmgateway-providers/google-ai-studio/gemini-3.5-flash-lite":{input:.3,output:2.5,cache_read:.03,cache_write:.08333},"llmgateway-providers/google-ai-studio/gemini-3.1-pro-preview":{input:2,output:12,cache_read:.2,tiers:[{input:4,output:18,cache_read:.4,tier:{type:"context",size:2e5}}],context_over_200k:{input:4,output:18,cache_read:.4}},"llmgateway-providers/google-ai-studio/gemini-3.5-flash":{input:1.5,output:9,cache_read:.15,cache_write:.08333},"llmgateway-providers/google-ai-studio/gemini-2.5-pro":{input:1.25,output:10,cache_read:.125,tiers:[{input:2.5,output:15,cache_read:.25,tier:{type:"context",size:2e5}}],context_over_200k:{input:2.5,output:15,cache_read:.25}},"llmgateway-providers/google-ai-studio/gemini-2.5-flash":{input:.3,output:2.5,cache_read:.03},"llmgateway-providers/google-ai-studio/gemini-3.7-flash":{input:.75,output:3.75,cache_read:.075,cache_write:.08333},"llmgateway-providers/google-ai-studio/gemini-3-flash-preview":{input:.5,output:3,cache_read:.05},"llmgateway-providers/google-ai-studio/gemini-pro-latest":{input:2,output:12,cache_read:.2},"llmgateway-providers/google-ai-studio/gemini-3.8-flash":{input:.75,output:3.75,cache_read:.075,cache_write:.08333},"llmgateway-providers/google-ai-studio/gemini-2.5-flash-lite":{input:.1,output:.4,cache_read:.01},"llmgateway-providers/google-ai-studio/gemini-3.1-flash-lite":{input:.25,output:1.5,cache_read:.025,cache_write:.08333},"llmgateway-providers/anthropic/claude-haiku-4-5":{input:1,output:5,cache_read:.1,cache_write:1.25},"llmgateway-providers/anthropic/claude-sonnet-4-5":{input:3,output:15,cache_read:.3,cache_write:3.75},"llmgateway-providers/anthropic/claude-opus-5-5":{input:4,output:20,cache_read:.2,cache_write:5},"llmgateway-providers/anthropic/claude-fable-5-1":{input:10,output:50,cache_read:.25,cache_write:12.5},"llmgateway-providers/anthropic/claude-opus-4-5-20251101":{input:5,output:25,cache_read:.5,cache_write:6.25},"llmgateway-providers/anthropic/claude-opus-5":{input:5,output:25,cache_read:.5,cache_write:6.25},"llmgateway-providers/anthropic/claude-fable-5":{input:10,output:50,cache_read:1,cache_write:12.5},"llmgateway-providers/anthropic/claude-opus-4-8":{input:5,output:25,cache_read:.5,cache_write:6.25},"llmgateway-providers/anthropic/claude-sonnet-4-5-20250929":{input:3,output:15,cache_read:.3,cache_write:3.75},"llmgateway-providers/anthropic/claude-sonnet-5":{input:2,output:10,cache_read:.2,cache_write:2.5},"llmgateway-providers/anthropic/claude-opus-4-6":{input:5,output:25,cache_read:.5,cache_write:6.25},"llmgateway-providers/anthropic/claude-haiku-4-5-20251001":{input:1,output:5,cache_read:.1,cache_write:1.25},"llmgateway-providers/anthropic/claude-sonnet-4-6":{input:3,output:15,cache_read:.3,cache_write:3.75},"llmgateway-providers/anthropic/claude-opus-4-7":{input:5,output:25,cache_read:.5,cache_write:6.25},"llmgateway-providers/deepseek/deepseek-v4.1-flash":{input:.15,output:.6,cache_read:.003},"llmgateway-providers/deepseek/deepseek-v4-pro":{input:.435,output:.87,cache_read:.003625},"llmgateway-providers/runpod/kimi-k3":{input:3,output:15,cache_read:.3},"llmgateway-providers/runware/gemma-4-31b-it":{input:.102,output:.297,cache_read:.012},"llmgateway-providers/runware/glm-5.3-flash":{input:.15,output:.5,cache_read:.03},"llmgateway-providers/runware/kimi-k3":{input:3,output:15,cache_read:.3},"llmgateway-providers/runware/deepseek-v4.1-flash":{input:.15,output:.6,cache_read:.01},"llmgateway-providers/runware/kimi-k2.6":{input:.6,output:3.05,cache_read:.13},"llmgateway-providers/runware/glm-5.2":{input:.8,output:2.55,cache_read:.16},"llmgateway-providers/runware/deepseek-v4-pro":{input:.961,output:1.922,cache_read:.079},"llmgateway-providers/runware/gpt-oss-120b":{input:.032,output:.14,cache_read:.032},"llmgateway-providers/runware/glm-5.3":{input:1.2,output:4,cache_read:.2},"llmgateway-providers/runware/deepseek-v4-flash":{input:.076,output:.153,cache_read:.014},"llmgateway-providers/tencent/glm-5v-turbo":{input:1.2,output:4,cache_read:.24},"llmgateway-providers/tencent/kimi-k3":{input:3,output:15,cache_read:.3},"llmgateway-providers/tencent/glm-5":{input:1,output:3.2,cache_read:.2},"llmgateway-providers/tencent/kimi-k2.7-code-highspeed":{input:1.9,output:8,cache_read:.38},"llmgateway-providers/tencent/kimi-k2.6":{input:.858,output:3.566,cache_read:.145},"llmgateway-providers/tencent/minimax-m2.7":{input:.3,output:1.2,cache_read:.06},"llmgateway-providers/tencent/mimo-v2.5-pro":{input:.435,output:.87,cache_read:.0036,tiers:[{input:2,output:6,cache_read:.4,tier:{type:"context",size:256e3}}],context_over_200k:{input:2,output:6,cache_read:.4}},"llmgateway-providers/tencent/minimax-m3":{input:.3,output:1.2,cache_read:.06},"llmgateway-providers/tencent/glm-5.2":{input:1.4,output:4.4,cache_read:.26},"llmgateway-providers/tencent/hy3":{input:.132,output:.528,cache_read:.033},"llmgateway-providers/tencent/hy-mt2-plus":{input:.074,output:.295},"llmgateway-providers/tencent/glm-5.1":{input:1.4,output:4.4,cache_read:.26},"llmgateway-providers/tencent/glm-5-turbo":{input:1.2,output:4,cache_read:.24},"llmgateway-providers/tencent/deepseek-v4-pro":{input:.435,output:.87,cache_read:.00363},"llmgateway-providers/tencent/hy4-preview":{input:.834,output:2.501,cache_read:.042},"llmgateway-providers/tencent/kimi-k2.7-code":{input:.95,output:4,cache_read:.19},"llmgateway-providers/tencent/deepseek-v4-flash":{input:.14,output:.28,cache_read:.0028},"llmgateway-providers/meta-contributor/muse-spark-1.2-contributor":{input:.1,output:.2,cache_read:.002},"llmgateway-providers/meta-contributor/muse-spark-1.3-contributor":{input:.1,output:.2,cache_read:.002},"llmgateway-providers/novita/glm-4.6v":{input:.3,output:.9,cache_read:.055},"llmgateway-providers/novita/gemma-4-31b-it":{input:.14,output:.4},"llmgateway-providers/novita/qwen3-vl-235b-a22b-instruct":{input:.3,output:1.5},"llmgateway-providers/novita/qwen3.7-max":{input:1.25,output:3.75,cache_read:.25},"llmgateway-providers/novita/mimo-v2.5":{input:.168,output:.336,cache_read:.0034,tiers:[{input:.8,output:4,cache_read:.16,tier:{type:"context",size:256e3}}],context_over_200k:{input:.8,output:4,cache_read:.16}},"llmgateway-providers/novita/qwen3.8-27b":{input:.42,output:3,cache_read:.085},"llmgateway-providers/novita/qwen3-vl-235b-a22b-thinking":{input:.98,output:3.95},"llmgateway-providers/novita/qwen3.8-2.4t-a95b":{input:2,output:6,cache_read:.25},"llmgateway-providers/novita/glm-5.3-flash":{input:.15,output:.5,cache_read:.03},"llmgateway-providers/novita/glm-4.6":{input:.55,output:2.2,cache_read:.11},"llmgateway-providers/novita/qwen3-235b-a22b-instruct-2507":{input:.09,output:.58},"llmgateway-providers/novita/qwen3.8-max":{input:2,output:6,cache_read:.25},"llmgateway-providers/novita/kimi-k3":{input:3,output:15,cache_read:.3},"llmgateway-providers/novita/llama-4-maverick-17b-instruct":{input:.27,output:.85},"llmgateway-providers/novita/glm-5":{input:1,output:3.2,cache_read:.2},"llmgateway-providers/novita/deepseek-v4.1-flash":{input:.3,output:1.2,cache_read:.006},"llmgateway-providers/novita/minimax-m2.5":{input:.3,output:1.2,cache_read:.03},"llmgateway-providers/novita/kimi-k2.6":{input:.8,output:3.4,cache_read:.16},"llmgateway-providers/novita/qwen3-max":{input:.845,output:3.38},"llmgateway-providers/novita/glm-4.5v":{input:.6,output:1.8,cache_read:.11},"llmgateway-providers/novita/llama-4-scout-17b-instruct":{input:.18,output:.59},"llmgateway-providers/novita/qwen3-235b-a22b-fp8":{input:.2,output:.8},"llmgateway-providers/novita/qwen3-coder-480b-a35b-instruct":{input:.38,output:1.55},"llmgateway-providers/novita/qwen3-coder-30b-a3b-instruct":{input:.07,output:.27},"llmgateway-providers/novita/ling-3.0-flash":{input:.06,output:.18,cache_read:.012},"llmgateway-providers/novita/qwen3-vl-30b-a3b-instruct":{input:.2,output:.7},"llmgateway-providers/novita/gemma-4-26b-a4b-it":{input:.13,output:.4},"llmgateway-providers/novita/llama-3-70b-instruct":{input:.51,output:.74},"llmgateway-providers/novita/qwen3-235b-a22b-thinking-2507":{input:.3,output:3},"llmgateway-providers/novita/llama-3.3-70b-instruct":{input:.135,output:.4},"llmgateway-providers/novita/qwen3.6-35b-a3b":{input:.248,output:1.485},"llmgateway-providers/novita/qwen3-next-80b-a3b-instruct":{input:.15,output:1.5},"llmgateway-providers/novita/minimax-m2.7":{input:.3,output:1.2,cache_read:.06},"llmgateway-providers/novita/mimo-v2.5-pro":{input:.522,output:1.044,cache_read:.0043,tiers:[{input:2,output:6,cache_read:.4,tier:{type:"context",size:256e3}}],context_over_200k:{input:2,output:6,cache_read:.4}},"llmgateway-providers/novita/glm-4.7":{input:.6,output:2.2,cache_read:.11},"llmgateway-providers/novita/qwen3.8-flash":{input:.15,output:.47,cache_read:.016},"llmgateway-providers/novita/qwen35-397b-a17b":{input:.6,output:3.6},"llmgateway-providers/novita/glm-5.2":{input:1.4,output:4.4,cache_read:.26},"llmgateway-providers/novita/ernie-4.5-vl-424b-a47b":{input:.42,output:1.25},"llmgateway-providers/novita/hy3":{input:.14,output:.58,cache_read:.035},"llmgateway-providers/novita/kimi-k2":{input:.57,output:2.3},"llmgateway-providers/novita/glm-5.1":{input:1.38,output:4.4,cache_read:.26},"llmgateway-providers/novita/step-3.7-flash":{input:.2,output:1.15,cache_read:.04},"llmgateway-providers/novita/llama-3.2-3b-instruct":{input:.03,output:.05},"llmgateway-providers/novita/deepseek-v3.2":{input:.269,output:.4,cache_read:.1345},"llmgateway-providers/novita/glm-5.3":{input:1.4,output:4.4,cache_read:.26},"llmgateway-providers/novita/kimi-k2.7-code":{input:.95,output:4,cache_read:.19},"llmgateway-providers/novita/minimax-m2.1":{input:.3,output:1.2,cache_read:.03},"llmgateway-providers/novita/deepseek-v4-flash":{input:.14,output:.28,cache_read:.028},"llmgateway-providers/embercloud/glm-4.5":{input:.6,output:2.2,cache_read:.11},"llmgateway-providers/embercloud/qwen3-coder-next":{input:.108,output:.675,cache_read:.06},"llmgateway-providers/embercloud/glm-5":{input:.72,output:2.3,cache_read:.144},"llmgateway-providers/embercloud/kimi-k2.5":{input:.405,output:1.98,cache_read:.225},"llmgateway-providers/embercloud/glm-4.7-flash":{input:.06,output:.4,cache_read:.01},"llmgateway-providers/embercloud/glm-4.7":{input:.38,output:1.98,cache_read:.19},"llmgateway-providers/embercloud/glm-5.2":{input:1.26,output:3.96,cache_read:.234},"llmgateway-providers/embercloud/glm-5.1":{input:.931,output:2.93,cache_read:.173},"llmgateway-providers/embercloud/glm-4.5-air":{input:.13,output:.85,cache_read:.025},"llmgateway-providers/perplexity/sonar-pro":{input:3,output:15},"llmgateway-providers/perplexity/sonar":{input:1,output:1},"llmgateway-providers/perplexity/sonar-reasoning-pro":{input:2,output:8},"llmgateway-providers/azure-ai-foundry/grok-4-1-fast-reasoning":{input:.2,output:.5},"llmgateway-providers/azure-ai-foundry/grok-4-1-fast-non-reasoning":{input:.2,output:.5},"llmgateway-providers/azure-ai-foundry/grok-4-3":{input:1.25,output:2.5,cache_read:.2,tiers:[{input:2.5,output:5,cache_read:.4,tier:{type:"context",size:2e5}}],context_over_200k:{input:2.5,output:5,cache_read:.4}},"llmgateway-providers/meta/muse-spark-1.3":{input:1.25,output:4.25,cache_read:.15},"llmgateway-providers/meta/muse-spark-1.1":{input:1.25,output:4.25,cache_read:.15},"llmgateway-providers/meta/muse-spark-1.2":{input:1.25,output:4.25,cache_read:.15},"llmgateway-providers/azure/gpt-5.4":{input:2.5,output:15,cache_read:.25},"llmgateway-providers/azure/gpt-5.4-pro":{input:30,output:180},"llmgateway-providers/azure/gpt-3.5-turbo":{input:.5,output:1.5},"llmgateway-providers/azure/gpt-5.4-nano":{input:.2,output:1.25,cache_read:.02},"llmgateway-providers/azure/gpt-5.2-codex":{input:1.75,output:14,cache_read:.175},"llmgateway-providers/azure/gpt-5.1-codex":{input:1.25,output:10},"llmgateway-providers/azure/gpt-4o":{input:2.5,output:10,cache_read:1.25},"llmgateway-providers/azure/gpt-5-mini":{input:.25,output:2,cache_read:.025},"llmgateway-providers/azure/gpt-5.2-pro":{input:21,output:168},"llmgateway-providers/azure/o4-mini":{input:1.1,output:4.4,cache_read:.275},"llmgateway-providers/azure/o3-mini":{input:1.1,output:4.4,cache_read:.55},"llmgateway-providers/azure/gpt-4":{input:30,output:60},"llmgateway-providers/azure/gpt-5.3-codex":{input:1.75,output:14,cache_read:.175},"llmgateway-providers/azure/gpt-4.1-nano":{input:.1,output:.4,cache_read:.025},"llmgateway-providers/azure/gpt-5-nano":{input:.05,output:.4,cache_read:.005},"llmgateway-providers/azure/o1":{input:15,output:60,cache_read:7.5},"llmgateway-providers/azure/gpt-6-astra":{input:10,output:50,cache_read:1,cache_write:12.5},"llmgateway-providers/azure/gpt-5.1":{input:1.25,output:10,cache_read:.125},"llmgateway-providers/azure/gpt-5.4-mini":{input:.75,output:4.5,cache_read:.075},"llmgateway-providers/azure/gpt-5.6-luna":{input:.2,output:1.2,cache_read:.02,cache_write:.25},"llmgateway-providers/azure/gpt-5.2":{input:1.75,output:14,cache_read:.175},"llmgateway-providers/azure/gpt-5.5":{input:5,output:30,cache_read:.5,tiers:[{input:10,output:45,cache_read:1,tier:{type:"context",size:272e3}}],context_over_200k:{input:10,output:45,cache_read:1}},"llmgateway-providers/azure/gpt-4.1":{input:2,output:8,cache_read:.5},"llmgateway-providers/azure/gpt-4.1-mini":{input:.4,output:1.6,cache_read:.1},"llmgateway-providers/azure/gpt-6-luna":{input:.1,output:.5,cache_read:.01,cache_write:.125},"llmgateway-providers/azure/gpt-5.6-terra":{input:2,output:12,cache_read:.2,cache_write:2.5},"llmgateway-providers/azure/gpt-4-turbo":{input:10,output:30},"llmgateway-providers/azure/gpt-oss-120b":{input:.15,output:.6},"llmgateway-providers/azure/gpt-5.1-codex-mini":{input:.25,output:2,cache_read:.025},"llmgateway-providers/azure/o3":{input:2,output:8,cache_read:.5},"llmgateway-providers/azure/gpt-5":{input:1.25,output:10,cache_read:.125},"llmgateway-providers/azure/gpt-5.6-sol":{input:4,output:20,cache_read:.4,cache_write:5},"llmgateway-providers/azure/gpt-6-sol":{input:2,output:10,cache_read:.2,cache_write:2.5},"llmgateway-providers/alibaba/qwen-flash":{input:.05,output:.4,cache_read:.01,cache_write:.0625},"llmgateway-providers/alibaba/qwen3.7-max":{input:2.5,output:7.5,cache_read:.5,cache_write:3.125},"llmgateway-providers/alibaba/qwen-coder-plus":{input:.502,output:1.004},"llmgateway-providers/alibaba/qwen3-vl-plus":{input:.2,output:1.6,cache_read:.04,cache_write:.25},"llmgateway-providers/alibaba/qwen-max":{input:1.6,output:6.4},"llmgateway-providers/alibaba/qwen3.8-max":{input:2,output:6,cache_read:.25,cache_write:2.5},"llmgateway-providers/alibaba/kimi-k3":{input:3,output:15,cache_read:.3},"llmgateway-providers/alibaba/glm-5":{input:.573,output:2.58},"llmgateway-providers/alibaba/deepseek-v4.1-flash":{input:.3,output:1.2,cache_read:.03},"llmgateway-providers/alibaba/qwen-plus":{input:.4,output:1.2,cache_read:.08,cache_write:.5},"llmgateway-providers/alibaba/qwen3.7-flash":{input:.03,output:.13,cache_read:.006,cache_write:.0375},"llmgateway-providers/alibaba/qwen3-max":{input:1.2,output:6,cache_read:.24,cache_write:1.5},"llmgateway-providers/alibaba/qwen3-vl-flash":{input:.05,output:.4,cache_read:.01},"llmgateway-providers/alibaba/kimi-k2.5":{input:.574,output:3.011},"llmgateway-providers/alibaba/qwen3.6-35b-a3b":{input:.375,output:2.25},"llmgateway-providers/alibaba/qwen3.6-flash":{input:.25,output:1.5,cache_read:.05,cache_write:.3125},"llmgateway-providers/alibaba/qwen3-coder-flash":{input:.3,output:1.5,cache_read:.06,cache_write:.375},"llmgateway-providers/alibaba/qwen3-coder-plus":{input:1,output:5,cache_read:.2,cache_write:1.25},"llmgateway-providers/alibaba/qwen3.8-flash":{input:.15,output:.47,cache_read:.016,cache_write:.2},"llmgateway-providers/alibaba/qwen35-397b-a17b":{input:.6,output:3.6},"llmgateway-providers/alibaba/qwen3.6-max-preview":{input:1.3,output:7.8,cache_read:.13},"llmgateway-providers/alibaba/glm-5.2":{input:1.4,output:4.4,cache_read:.28},"llmgateway-providers/alibaba/qwen-omni-turbo":{input:.2,output:.8},"llmgateway-providers/alibaba/deepseek-v4-pro":{input:2.4,output:4.8,cache_read:.2},"llmgateway-providers/alibaba/qwen3.6-plus":{input:.5,output:3,cache_read:.05,cache_write:.625,tiers:[{input:2,output:6,cache_read:.2,cache_write:2.5,tier:{type:"context",size:256e3}}],context_over_200k:{input:2,output:6,cache_read:.2,cache_write:2.5}},"llmgateway-providers/alibaba/qwen-plus-latest":{input:.4,output:1.2,cache_read:.08,cache_write:.5},"llmgateway-providers/alibaba/glm-5.3":{input:1.4,output:4.4,cache_read:.28},"llmgateway-providers/alibaba/qwen3.7-plus":{input:.4,output:1.6,cache_read:.08,cache_write:.5},"llmgateway-providers/alibaba/deepseek-v4-flash":{input:.2,output:.4,cache_read:.04},"llmgateway-providers/baidu/glm-5":{input:1,output:3.2,cache_read:.2},"llmgateway-providers/baidu/deepseek-v4.1-flash":{input:.3,output:1.2,cache_read:.006},"llmgateway-providers/baidu/kimi-k2.6":{input:.95,output:4,cache_read:.16},"llmgateway-providers/baidu/glm-5.2":{input:1.4,output:4.4,cache_read:.26},"llmgateway-providers/baidu/glm-5.1":{input:1.4,output:4.4,cache_read:.26},"llmgateway-providers/baidu/deepseek-v4-pro":{input:1.32,output:3.96,cache_read:.042},"llmgateway-providers/baidu/glm-5.3":{input:1.4,output:4.4,cache_read:.26},"llmgateway-providers/baidu/deepseek-v4-flash":{input:.44,output:1.32,cache_read:.014},"llmgateway-providers/gonka24/glm-5.3-flash":{input:.15,output:.3,cache_read:.035},"llmgateway-providers/gonka24/minimax-m2.7":{input:.08,output:.32,cache_read:.017},"llmgateway-providers/gonka24/deepseek-v4-flash":{input:.065,output:.116,cache_read:.012},"llmgateway-providers/bytedance/seed-1-6-flash-250715":{input:.07,output:.3,cache_read:.015},"llmgateway-providers/bytedance/seed-1-6-250915":{input:.25,output:2,cache_read:.05},"llmgateway-providers/bytedance/seed-1-8-251228":{input:.25,output:2,cache_read:.05},"llmgateway-providers/bytedance/glm-4.7":{input:.6,output:2.2,cache_read:.11},"llmgateway-providers/bytedance/seed-1-6-250615":{input:.25,output:2,cache_read:.05},"llmgateway-providers/bytedance/glm-5.2":{input:1.4,output:4.4,cache_read:.26},"llmgateway-providers/bytedance/deepseek-v4-pro":{input:1.32,output:3.96,cache_read:.044},"llmgateway-providers/bytedance/deepseek-v3.2":{input:.28,output:.42,cache_read:.056},"llmgateway-providers/bytedance/gpt-oss-120b":{input:.1,output:.5,cache_read:.02},"llmgateway-providers/bytedance/deepseek-v4-flash":{input:.44,output:1.32,cache_read:.014},"llmgateway-providers/xai/grok-4-5":{input:2,output:6,cache_read:.3},"llmgateway-providers/xai/grok-build-0-1":{input:1,output:2,cache_read:.2,tiers:[{input:2,output:4,cache_read:.4,tier:{type:"context",size:2e5}}],context_over_200k:{input:2,output:4,cache_read:.4}},"llmgateway-providers/xai/grok-4":{input:3,output:15,cache_read:.75},"llmgateway-providers/xai/grok-4-20-beta-0309-non-reasoning":{input:2,output:6,cache_read:.2,tiers:[{input:2.5,output:5,cache_read:.4,tier:{type:"context",size:2e5}}],context_over_200k:{input:2.5,output:5,cache_read:.4}},"llmgateway-providers/xai/grok-4-3":{input:1.25,output:2.5,cache_read:.2,tiers:[{input:2.5,output:5,cache_read:.4,tier:{type:"context",size:2e5}}],context_over_200k:{input:2.5,output:5,cache_read:.4}},"llmgateway-providers/xai/grok-4-20-beta-0309-reasoning":{input:2,output:6,cache_read:.2,tiers:[{input:2.5,output:5,cache_read:.4,tier:{type:"context",size:2e5}}],context_over_200k:{input:2.5,output:5,cache_read:.4}},"llmgateway-providers/xai/grok-4-6":{input:2,output:6,cache_read:.5},"llmgateway-providers/xai/grok-4-7":{input:2,output:6,cache_read:.5},"llmgateway-providers/ranoai/deepseek-v4-flash":{input:.14,output:.28,cache_read:.028},"llmgateway-providers/canopywave/kimi-k3":{input:3,output:15,cache_read:.3},"llmgateway-providers/canopywave/kimi-k2.6":{input:.95,output:4,cache_read:.16},"llmgateway-providers/canopywave/glm-5.2":{input:1.4,output:4.4,cache_read:.26},"llmgateway-providers/canopywave/deepseek-v4-pro":{input:1.74,output:3.48,cache_read:.01},"llmgateway-providers/canopywave/deepseek-v4-flash":{input:.14,output:.28,cache_read:.03},"llmgateway-providers/fireworks/kimi-k3":{input:3,output:15,cache_read:.3},"llmgateway-providers/fireworks/deepseek-v4.1-flash":{input:.22,output:.66,cache_read:.007},"llmgateway-providers/fireworks/kimi-k3-fast":{input:4.5,output:22.5,cache_read:.45},"llmgateway-providers/fireworks/deepseek-v4-pro":{input:1.32,output:3.96,cache_read:.044},"llmgateway-providers/fireworks/deepseek-v4-flash":{input:.22,output:.66,cache_read:.007},"llmgateway-providers/sakana/fugu-max":{input:2,output:6,cache_read:.25},"llmgateway-providers/sakana/fugu-ultra-v2.0":{input:5,output:30,cache_read:.5},"llmgateway-providers/sakana/fugu-ultra":{input:5,output:30,cache_read:.5},"llmgateway-providers/scx-ai/gemma-4-31b-it":{input:.3,output:.91},"llmgateway-providers/scx-ai/llama-4-maverick-17b-instruct":{input:.53,output:1.62},"llmgateway-providers/scx-ai/qwen3-32b":{input:.36,output:.87},"llmgateway-providers/scx-ai/minimax-m2.7":{input:.48,output:1.79,cache_read:.05},"llmgateway-providers/scx-ai/gpt-oss-120b":{input:.17,output:.55},"llmgateway-providers/together-ai/qwen3.8-2.4t-a95b":{input:2,output:6,cache_read:.25},"llmgateway-providers/together-ai/glm-5.3-flash":{input:.15,output:.5,cache_read:.03},"llmgateway-providers/together-ai/muse-glimmer-30b":{input:.35,output:1.5,cache_read:.04},"llmgateway-providers/together-ai/kimi-k3":{input:3,output:15,cache_read:.3},"llmgateway-providers/together-ai/deepseek-v4.1-flash":{input:.3,output:1.2,cache_read:.006},"llmgateway-providers/together-ai/inkling":{input:1,output:4.05,cache_read:.17},"llmgateway-providers/together-ai/glm-4.7":{input:.45,output:2},"llmgateway-providers/together-ai/minimax-m3":{input:.3,output:1.2,cache_read:.06},"llmgateway-providers/together-ai/deepseek-v4-pro":{input:1.32,output:3.96,cache_read:.13},"llmgateway-providers/together-ai/gpt-oss-120b":{input:.15,output:.6},"llmgateway-providers/together-ai/glm-5.3":{input:1.4,output:4.4,cache_read:.26},"llmgateway-providers/together-ai/deepseek-v4-flash":{input:.14,output:.28,cache_read:.03},"llmgateway-providers/xiaomi/mimo-v2.6-pro":{input:.435,output:.87,cache_read:.0036},"llmgateway-providers/xiaomi/mimo-v2.5":{input:.14,output:.28,cache_read:.0028,tiers:[{input:.8,output:4,cache_read:.16,tier:{type:"context",size:256e3}}],context_over_200k:{input:.8,output:4,cache_read:.16}},"llmgateway-providers/xiaomi/mimo-v2.5-pro":{input:.435,output:.87,cache_read:.0036,tiers:[{input:2,output:6,cache_read:.4,tier:{type:"context",size:256e3}}],context_over_200k:{input:2,output:6,cache_read:.4}},"llmgateway-providers/xiaomi/mimo-v2.6-flash":{input:.14,output:.28,cache_read:.0028},"llmgateway-providers/quartz/gemini-3.1-pro-preview":{input:2,output:12,cache_read:.2,tiers:[{input:4,output:18,cache_read:.4,tier:{type:"context",size:2e5}}],context_over_200k:{input:4,output:18,cache_read:.4}},"llmgateway-providers/minimax/minimax-m2.5":{input:.3,output:1.2,cache_read:.03},"llmgateway-providers/minimax/minimax-m2.1-lightning":{input:.12,output:.48},"llmgateway-providers/minimax/minimax-text-01":{input:.2,output:1.1},"llmgateway-providers/minimax/minimax-m2.7":{input:.3,output:1.2,cache_read:.06},"llmgateway-providers/minimax/minimax-m3":{input:.6,output:2.4,cache_read:.12},"llmgateway-providers/minimax/minimax-m2.7-highspeed":{input:.6,output:2.4,cache_read:.06},"llmgateway-providers/minimax/minimax-m2.5-highspeed":{input:.6,output:2.4,cache_read:.03},"llmgateway-providers/minimax/minimax-m2.1":{input:.27,output:1.1},"llmgateway-providers/minimax/minimax-m2":{input:.2,output:1,cache_read:.03},"llmgateway-providers/inference.net/llama-3.2-11b-instruct":{input:.07,output:.33},"llmgateway-providers/azure-anthropic/claude-opus-5":{input:5,output:25,cache_read:.5,cache_write:6.25},"llmgateway-providers/azure-anthropic/claude-fable-5":{input:10,output:50,cache_read:1,cache_write:12.5},"llmgateway-providers/azure-anthropic/claude-opus-4-8":{input:5,output:25,cache_read:.5,cache_write:6.25},"llmgateway-providers/azure-anthropic/claude-sonnet-5":{input:2,output:10,cache_read:.2,cache_write:2.5},"llmgateway-providers/azure-anthropic/claude-opus-4-6":{input:5,output:25,cache_read:.5,cache_write:6.25},"llmgateway-providers/azure-anthropic/claude-opus-4-7":{input:5,output:25,cache_read:.5,cache_write:6.25},"llmgateway-providers/mistral/mistral-large-latest":{input:4,output:12},"llmgateway-providers/mistral/ministral-8b-2512":{input:.15,output:.15},"llmgateway-providers/mistral/devstral-2512":{input:.4,output:2},"llmgateway-providers/mistral/mistral-large-2512":{input:.5,output:1.5},"llmgateway-providers/mistral/ministral-14b-2512":{input:.2,output:.2},"llmgateway-providers/mistral/mistral-small-2506":{input:.1,output:.3},"llmgateway-providers/mistral/ministral-3b-2512":{input:.1,output:.1},"llmgateway-providers/mistral/codestral-2508":{input:.3,output:.9},"llmgateway-providers/vertex-anthropic/claude-haiku-4-5":{input:1,output:5,cache_read:.1},"llmgateway-providers/vertex-anthropic/claude-sonnet-4-5":{input:3,output:15,cache_read:.3},"llmgateway-providers/vertex-anthropic/claude-opus-4-5-20251101":{input:5,output:25,cache_read:.5},"llmgateway-providers/vertex-anthropic/claude-sonnet-5":{input:2,output:10,cache_read:.2,cache_write:2.5},"llmgateway-providers/vertex-anthropic/claude-opus-4-6":{input:5,output:25,cache_read:.5},"llmgateway-providers/vertex-anthropic/claude-sonnet-4-6":{input:3,output:15,cache_read:.3},"llmgateway-providers/vertex-anthropic/claude-opus-4-7":{input:5,output:25,cache_read:.5},"llmgateway-providers/vertex-openai/qwen3-235b-a22b-instruct-2507":{input:.22,output:.88},"llmgateway-providers/vertex-openai/qwen3-next-80b-a3b-thinking":{input:.15,output:1.2},"llmgateway-providers/vertex-openai/glm-5":{input:1,output:3.2,cache_read:.1},"llmgateway-providers/vertex-openai/qwen3-coder-480b-a35b-instruct":{input:.22,output:1.8,cache_read:.022},"llmgateway-providers/vertex-openai/kimi-k2-thinking":{input:.6,output:2.5,cache_read:.06},"llmgateway-providers/vertex-openai/qwen3-next-80b-a3b-instruct":{input:.15,output:1.2},"llmgateway-providers/vertex-openai/glm-4.7":{input:.6,output:2.2},"llmgateway-providers/vertex-openai/grok-4-20-non-reasoning":{input:1.25,output:2.5,cache_read:.2,tiers:[{input:2.5,output:5,cache_read:.4,tier:{type:"context",size:2e5}}],context_over_200k:{input:2.5,output:5,cache_read:.4}},"llmgateway-providers/vertex-openai/grok-4-6":{input:2,output:6,cache_read:.5},"llmgateway-providers/vertex-openai/grok-4-20-reasoning":{input:1.25,output:2.5,cache_read:.2,tiers:[{input:2.5,output:5,cache_read:.4,tier:{type:"context",size:2e5}}],context_over_200k:{input:2.5,output:5,cache_read:.4}},"llmgateway-providers/vertex-openai/deepseek-v3.2":{input:.56,output:1.68,cache_read:.056},"llmgateway-providers/google-vertex/gemini-3.6-flash":{input:.75,output:3.75,cache_read:.075,cache_write:.08333},"llmgateway-providers/google-vertex/gemini-3.5-flash-lite":{input:.3,output:2.5,cache_read:.03,cache_write:.08333},"llmgateway-providers/google-vertex/gemini-3.1-pro-preview":{input:2,output:12,cache_read:.2,tiers:[{input:4,output:18,cache_read:.4,tier:{type:"context",size:2e5}}],context_over_200k:{input:4,output:18,cache_read:.4}},"llmgateway-providers/google-vertex/gemini-3.5-flash":{input:1.5,output:9,cache_read:.15,cache_write:.08333},"llmgateway-providers/google-vertex/gemini-2.5-pro":{input:1.25,output:10,cache_read:.125,tiers:[{input:2.5,output:15,cache_read:.25,tier:{type:"context",size:2e5}}],context_over_200k:{input:2.5,output:15,cache_read:.25}},"llmgateway-providers/google-vertex/gemini-2.5-flash":{input:.3,output:2.5,cache_read:.03},"llmgateway-providers/google-vertex/gemini-3.7-flash":{input:.75,output:3.75,cache_read:.075,cache_write:.08333},"llmgateway-providers/google-vertex/gemini-3-flash-preview":{input:.5,output:3,cache_read:.05},"llmgateway-providers/google-vertex/gemini-3.8-flash":{input:.75,output:3.75,cache_read:.075,cache_write:.08333},"llmgateway-providers/google-vertex/gemini-2.5-flash-lite":{input:.1,output:.4,cache_read:.01},"llmgateway-providers/google-vertex/gemini-3.1-flash-lite":{input:.25,output:1.5,cache_read:.025,cache_write:.08333},"llmgateway-providers/aws-mantle/gpt-6-astra":{input:10,output:50,cache_read:1,cache_write:12.5},"llmgateway-providers/aws-mantle/gpt-5.6-luna":{input:.22,output:1.32,cache_read:.022,cache_write:.275},"llmgateway-providers/aws-mantle/gpt-5.6-terra":{input:2.2,output:13.2,cache_read:.22,cache_write:2.75},"llmgateway-providers/aws-mantle/gpt-5.6-sol":{input:4.4,output:22,cache_read:.44,cache_write:5.5},"llmgateway-providers/openai/gpt-5.4":{input:2.5,output:15,cache_read:.25},"llmgateway-providers/openai/gpt-5.4-pro":{input:30,output:180},"llmgateway-providers/openai/gpt-3.5-turbo":{input:.5,output:1.5},"llmgateway-providers/openai/gpt-4o-transcribe":{input:2.5,output:10},"llmgateway-providers/openai/gpt-5.5-pro":{input:30,output:180,tiers:[{input:60,output:270,tier:{type:"context",size:272e3}}],context_over_200k:{input:60,output:270}},"llmgateway-providers/openai/gpt-5.4-nano":{input:.2,output:1.25,cache_read:.02},"llmgateway-providers/openai/gpt-4o":{input:2.5,output:10,cache_read:1.25},"llmgateway-providers/openai/gpt-5-mini":{input:.25,output:2,cache_read:.025},"llmgateway-providers/openai/gpt-5.2-pro":{input:21,output:168},"llmgateway-providers/openai/o4-mini":{input:1.1,output:4.4,cache_read:.275},"llmgateway-providers/openai/o3-mini":{input:1.1,output:4.4,cache_read:.55},"llmgateway-providers/openai/gpt-4":{input:30,output:60},"llmgateway-providers/openai/gpt-5.3-codex":{input:1.75,output:14,cache_read:.175},"llmgateway-providers/openai/gpt-4.1-nano":{input:.1,output:.4,cache_read:.025},"llmgateway-providers/openai/gpt-5-nano":{input:.05,output:.4,cache_read:.005},"llmgateway-providers/openai/o1":{input:15,output:60,cache_read:7.5},"llmgateway-providers/openai/gpt-5-pro":{input:15,output:120},"llmgateway-providers/openai/gpt-6-astra":{input:10,output:50,cache_read:1,cache_write:12.5},"llmgateway-providers/openai/gpt-5.1":{input:1.25,output:10,cache_read:.125},"llmgateway-providers/openai/gpt-4o-mini":{input:.15,output:.6,cache_read:.075},"llmgateway-providers/openai/gpt-5.4-mini":{input:.75,output:4.5,cache_read:.075},"llmgateway-providers/openai/gpt-5.6-luna":{input:.2,output:1.2,cache_read:.02,cache_write:.25},"llmgateway-providers/openai/gpt-5.2":{input:1.75,output:14,cache_read:.175},"llmgateway-providers/openai/gpt-5.5":{input:5,output:30,cache_read:.5,tiers:[{input:10,output:45,cache_read:1,tier:{type:"context",size:272e3}}],context_over_200k:{input:10,output:45,cache_read:1}},"llmgateway-providers/openai/gpt-4.1":{input:2,output:8,cache_read:.5},"llmgateway-providers/openai/gpt-4.1-mini":{input:.4,output:1.6,cache_read:.1},"llmgateway-providers/openai/gpt-6-luna":{input:.1,output:.5,cache_read:.01,cache_write:.125},"llmgateway-providers/openai/gpt-4o-mini-transcribe":{input:1.25,output:5},"llmgateway-providers/openai/gpt-5.6-terra":{input:2,output:12,cache_read:.2,cache_write:2.5},"llmgateway-providers/openai/gpt-4-turbo":{input:10,output:30},"llmgateway-providers/openai/o3":{input:2,output:8,cache_read:.5},"llmgateway-providers/openai/gpt-5":{input:1.25,output:10,cache_read:.125},"llmgateway-providers/openai/gpt-5.6-sol":{input:4,output:20,cache_read:.4,cache_write:5},"llmgateway-providers/openai/gpt-6-sol":{input:2,output:10,cache_read:.2,cache_write:2.5},"llmgateway-providers/moonshot/kimi-k3":{input:3,output:15,cache_read:.3},"llmgateway-providers/moonshot/kimi-k2.7-code-highspeed":{input:1.9,output:8,cache_read:.38},"llmgateway-providers/moonshot/kimi-k2.6":{input:.95,output:4,cache_read:.16},"llmgateway-providers/moonshot/kimi-k2.5":{input:.6,output:3,cache_read:.1},"llmgateway-providers/moonshot/kimi-k2.7-code":{input:.95,output:4,cache_read:.19},"above/mimo-v2.6-pro":{input:.5077,output:1.0154,cache_read:.0042},"above/glm-5.3-flash":{input:.165,output:.55,cache_read:.0319},"above/glm-5.2-fast":{input:2.31,output:7.26,cache_read:.231},"above/qwen3.8-max":{input:2.2,output:6.6,cache_read:.275},"above/deepseek-v4.1-flash":{input:.165,output:.66,reasoning:.66,cache_read:.0033},"above/mimo-v2.6-pro-ultraspeed":{input:5.0769,output:10.1538,cache_read:.0423},"above/mimo-v2.6-flash":{input:.1692,output:.3385,cache_read:.0034},"above/glm-5.2":{input:1.54,output:4.84,cache_read:.154},"above/deepseek-v4-pro":{input:.726,output:2.178,reasoning:2.178,cache_read:.0242},"above/deepseek-v4-flash":{input:.165,output:.66,reasoning:.66,cache_read:.0033},"kilo/sao10k/l3-lunaris-8b":{input:.04,output:.05},"kilo/sao10k/l3.3-euryale-70b":{input:.65,output:.75},"kilo/sao10k/l3.1-euryale-70b":{input:.85,output:.85},"kilo/kwaipilot/kat-coder-pro-v2.5":{input:.74,output:2.96,cache_read:.15},"kilo/stealth/claude-opus-4.6":{input:4,output:20,reasoning:0,cache_read:.4,cache_write:5},"kilo/stealth/claude-opus-4.7":{input:4,output:20,reasoning:0,cache_read:.4,cache_write:5},"kilo/stealth/claude-opus-4.8":{input:4,output:20,reasoning:0,cache_read:.4,cache_write:5},"kilo/stealth/claude-sonnet-4.6":{input:2.4,output:12,reasoning:0,cache_read:.24,cache_write:3},"kilo/stealth/qwen3.6-plus":{input:.25,output:1.5,reasoning:0,cache_read:.025,cache_write:.3125},"kilo/bytedance-seed/seed-1.6-flash":{input:.075,output:.3},"kilo/bytedance-seed/seed-2.0-lite":{input:.25,output:2},"kilo/bytedance-seed/seed-2-1-turbo":{input:.5,output:2.5},"kilo/bytedance-seed/seed-2.0-mini":{input:.1,output:.4},"kilo/bytedance-seed/seed-2.0-code":{input:.5,output:3},"kilo/bytedance-seed/seed-1.6":{input:.25,output:2},"kilo/~moonshotai/kimi-latest":{input:1.0301,output:9.043,cache_read:.3},"kilo/poolside/laguna-s-2.1":{input:.1,output:.2,cache_read:.01},"kilo/poolside/laguna-xs-2.1":{input:.1,output:.2,cache_read:.05},"kilo/prism-ml/ternary-bonsai-2-27b":{input:.075,output:.5},"kilo/anthropic/claude-opus-4.1":{input:15,output:75,cache_read:1.5,cache_write:18.75},"kilo/anthropic/claude-opus-4.5":{input:5,output:25,cache_read:.5,cache_write:6.25},"kilo/anthropic/claude-opus-4.6":{input:5,output:25,cache_read:.5,cache_write:6.25},"kilo/anthropic/claude-opus-4.7":{input:5,output:25,cache_read:.5,cache_write:6.25},"kilo/anthropic/claude-opus-4.8":{input:5,output:25,cache_read:.5,cache_write:6.25},"kilo/anthropic/claude-haiku-4.5":{input:1,output:5,cache_read:.1,cache_write:1.25},"kilo/anthropic/claude-opus-5":{input:5,output:25,cache_read:.5,cache_write:6.25},"kilo/anthropic/claude-fable-5.1":{input:10,output:50,cache_read:.25,cache_write:12.5},"kilo/anthropic/claude-sonnet-4.5":{input:3,output:15,cache_read:.3,cache_write:3.75},"kilo/anthropic/claude-fable-5":{input:10,output:50,cache_read:1,cache_write:12.5},"kilo/anthropic/claude-sonnet-4":{input:3,output:15,cache_read:.3,cache_write:3.75},"kilo/anthropic/claude-sonnet-5":{input:2,output:10,cache_read:.2,cache_write:2.5},"kilo/anthropic/claude-sonnet-4.6":{input:3,output:15,cache_read:.3,cache_write:3.75},"kilo/anthropic/claude-opus-5.5":{input:4,output:20,cache_read:.2,cache_write:5},"kilo/cohere/command-r-08-2024":{input:.15,output:.6},"kilo/cohere/command-a-plus":{input:.3,output:1.5,cache_read:.15},"kilo/cohere/command-a":{input:2.5,output:10},"kilo/cohere/command-r7b-12-2024":{input:.0375,output:.15},"kilo/cohere/command-r-plus-08-2024":{input:2.5,output:10},"kilo/deepseek/deepseek-chat-v3.1":{input:.27,output:1,cache_read:.135},"kilo/deepseek/deepseek-v4-flash-0731":{input:.44,output:1.32,cache_read:.028},"kilo/deepseek/deepseek-v4.1-flash":{input:.3,output:1.2,cache_read:.006},"kilo/deepseek/deepseek-v4-flash-vision-exp":{input:.44,output:1.32,cache_read:.028},"kilo/deepseek/deepseek-r1-distill-llama-70b":{input:.8,output:.8},"kilo/deepseek/deepseek-v3.1-terminus":{input:.27,output:1,cache_read:.135},"kilo/deepseek/deepseek-chat":{input:.32,output:.89},"kilo/deepseek/deepseek-v4-pro-0813":{input:1.32,output:3.96,cache_read:.044},"kilo/deepseek/deepseek-v3.2-exp":{input:.27,output:.41},"kilo/deepseek/deepseek-chat-v3-0324":{input:.25,output:1},"kilo/deepseek/deepseek-r1":{input:.7,output:2.5},"kilo/deepseek/deepseek-v4-pro":{input:1.6,output:3.2,cache_read:.135},"kilo/deepseek/deepseek-r1-0528":{input:.7,output:2.5,cache_read:.35},"kilo/deepseek/deepseek-v3.2":{input:.269,output:.4,cache_read:.1345},"kilo/deepseek/deepseek-v4-flash":{input:.14,output:.28,cache_read:.028},"kilo/unbiased/pareto":{input:2.5,output:7.5,cache_read:.25},"kilo/tencent/hy3-preview":{input:.18,output:.6,cache_read:.06},"kilo/tencent/hunyuan-a13b-instruct":{input:.14,output:.57},"kilo/tencent/hy-mt2-30b-a3b":{input:.074,output:.295},"kilo/tencent/hy-mt2-1.8b":{input:.044,output:.177},"kilo/tencent/hy3":{input:.13,output:.53,cache_read:.033},"kilo/tencent/hy-mt2-7b":{input:.074,output:.295},"kilo/tencent/hy4-preview":{input:.834,output:2.501,cache_read:.042},"kilo/anthracite-org/magnum-v4-72b":{input:2.5,output:5},"kilo/meta-llama/llama-4-scout":{input:.1,output:.3},"kilo/meta-llama/llama-guard-4-12b":{input:.18,output:.18},"kilo/meta-llama/llama-4-maverick":{input:.1875,output:.6525},"kilo/meta-llama/llama-3.3-70b-instruct":{input:.1,output:.32},"kilo/meta-llama/llama-3.1-8b-instruct":{input:.02,output:.04},"kilo/meta-llama/llama-3.2-1b-instruct":{input:.027,output:.201},"kilo/meta-llama/llama-3.2-3b-instruct":{input:.05,output:.33},"kilo/meta-llama/llama-3.1-70b-instruct":{input:.4,output:.4},"kilo/~google/gemini-flash-latest":{input:.75,output:3.75,reasoning:3.75,cache_read:.075,cache_write:.041667},"kilo/~google/gemini-pro-latest":{input:2,output:12,reasoning:12,cache_read:.2,cache_write:.375},"kilo/perceptron/perceptron-mk1":{input:.15,output:1.5},"kilo/perceptron/perceptron-mk1.5":{input:.15,output:1.5},"kilo/z-ai/glm-4.6v":{input:.3,output:.9,cache_read:.055},"kilo/z-ai/glm-4.5":{input:.6,output:2.2,cache_read:.11},"kilo/z-ai/glm-5.3-prime":{input:2.8,output:8.8,cache_read:.56},"kilo/z-ai/glm-5v-turbo":{input:1.2,output:4,cache_read:.24},"kilo/z-ai/glm-5.3-flash":{input:.15,output:.5,cache_read:.03},"kilo/z-ai/glm-4.6":{input:.43,output:1.75,cache_read:.08},"kilo/z-ai/glm-5":{input:.6,output:1.92,cache_read:.12},"kilo/z-ai/glm-4.5v":{input:.6,output:1.8,cache_read:.11},"kilo/z-ai/glm-5.3-flashx":{input:.37,output:1.25,cache_read:.09},"kilo/z-ai/glm-4.7-flash":{input:.0605,output:.4},"kilo/z-ai/glm-4.7":{input:.6,output:2.2,cache_read:.11},"kilo/z-ai/glm-5.2":{input:1.4,output:4.4,cache_read:.26},"kilo/z-ai/glm-5.1":{input:1.4,output:4.4,cache_read:.26},"kilo/z-ai/glm-5-turbo":{input:1.2,output:4,cache_read:.24},"kilo/z-ai/glm-4.5-air":{input:.13,output:.85,cache_read:.025},"kilo/z-ai/glm-5.3":{input:1.4,output:4.4,cache_read:.26},"kilo/inference-net/schematron-v2-small":{input:.05,output:.23,cache_read:.05},"kilo/inference-net/schematron-v2-turbo":{input:.03,output:.15,cache_read:.03},"kilo/thinkingmachines/inkling-small":{input:.45,output:1.2,cache_read:.1},"kilo/thinkingmachines/inkling":{input:.95,output:4.05,cache_read:.16},"kilo/meituan/longcat-2.0":{input:.75,output:3,cache_read:.015},"kilo/perplexity/sonar-pro":{input:3,output:15},"kilo/perplexity/sonar-deep-research":{input:2,output:8,reasoning:3},"kilo/perplexity/sonar":{input:1,output:1},"kilo/perplexity/sonar-reasoning-pro":{input:2,output:8},"kilo/perplexity/sonar-pro-search":{input:3,output:15},"kilo/meta/muse-spark-1.3":{input:1.25,output:4.25,cache_read:.15},"kilo/meta/muse-glimmer-30b":{input:.3,output:1.1,cache_read:.04},"kilo/meta/muse-spark-1.1":{input:1.25,output:4.25,cache_read:.15},"kilo/meta/muse-spark-1.2":{input:1.25,output:4.25,cache_read:.15},"kilo/meta/muse-spark-1.2-contributor":{input:.1,output:.2,cache_read:.002},"kilo/meta/muse-spark-1.3-contributor":{input:.1,output:.2,cache_read:.002},"kilo/nousresearch/hermes-3-llama-3.1-70b":{input:.7,output:.7},"kilo/nousresearch/hermes-3-llama-3.1-405b":{input:1,output:1},"kilo/nousresearch/hermes-4-405b":{input:1,output:3},"kilo/~z-ai/glm-flash-latest":{input:.04,output:.5,cache_read:.015},"kilo/~z-ai/glm-latest":{input:.3794,output:1.1924,cache_read:.07046},"kilo/arcee-ai/trinity-large-thinking":{input:.25,output:.8,cache_read:.06},"kilo/~openai/gpt-terra-latest":{input:2,output:12,cache_read:.2,cache_write:2.5},"kilo/~openai/gpt-luna-latest":{input:.1,output:.5,cache_read:.01,cache_write:.125},"kilo/~openai/gpt-sol-latest":{input:2,output:10,cache_read:.2,cache_write:2.5},"kilo/~openai/gpt-astra-latest":{input:10,output:50,cache_read:1,cache_write:12.5},"kilo/~openai/gpt-mini-latest":{input:.75,output:4.5,cache_read:.075},"kilo/cognitivecomputations/dolphin-mistral-24b-venice-edition":{input:.2,output:.9},"kilo/thedrummer/skyfall-36b-v2":{input:.55,output:.8,cache_read:.25},"kilo/thedrummer/unslopnemo-12b":{input:.4,output:.4},"kilo/thedrummer/cydonia-24b-v4.1":{input:.3,output:.5,cache_read:.15},"kilo/baidu/ernie-4.5-vl-424b-a47b":{input:.42,output:1.25},"kilo/x-ai/grok-4.20-multi-agent":{input:1.25,output:2.5,cache_read:.2},"kilo/x-ai/grok-4.7":{input:1.6,output:4.8,cache_read:.4},"kilo/x-ai/grok-4.3":{input:1.25,output:2.5,cache_read:.2},"kilo/x-ai/grok-4.5":{input:2,output:6,cache_read:.3},"kilo/x-ai/grok-build-0.1":{input:1,output:2,cache_read:.2},"kilo/x-ai/grok-4.20":{input:1.25,output:2.5,cache_read:.2},"kilo/x-ai/grok-4.6":{input:2,output:6,cache_read:.5},"kilo/~anthropic/claude-opus-latest":{input:4,output:20,cache_read:.2,cache_write:5},"kilo/~anthropic/claude-haiku-latest":{input:1,output:5,cache_read:.1,cache_write:1.25},"kilo/~anthropic/claude-sonnet-latest":{input:2,output:10,cache_read:.2,cache_write:2.5},"kilo/~anthropic/claude-fable-latest":{input:10,output:50,cache_read:.25,cache_write:12.5},"kilo/upstage/solar-pro-3":{input:.15,output:.6,cache_read:.015},"kilo/upstage/solar-pro4":{input:.3,output:1.2,cache_read:.06},"kilo/upstage/solar-mini4":{input:.1,output:.4,cache_read:.01},"kilo/~deepseek/deepseek-flash-latest":{input:.035,output:.29,cache_read:.001},"kilo/~deepseek/deepseek-pro-latest":{input:.24948,output:.74844,cache_read:.007938},"kilo/~deepseek/deepseek-v4-flash-latest":{input:.021,output:.32,cache_read:.016},"kilo/~x-ai/grok-latest":{input:1.6,output:4.8,cache_read:.4},"kilo/bytedance/ui-tars-1.5-7b":{input:.1,output:.2,cache_read:.1},"kilo/google/gemma-4-31b-it":{input:.08,output:.3,cache_read:.05},"kilo/google/gemini-3.1-flash-image-preview":{input:.5,output:3},"kilo/google/gemma-3-27b-it":{input:.08,output:.16},"kilo/google/gemini-2.5-flash-image":{input:.15,output:1.25,cache_read:.015,cache_write:.041667},"kilo/google/gemma-2-27b-it":{input:.65,output:.65},"kilo/google/gemini-3.6-flash":{input:.375,output:1.875,reasoning:1.875,cache_read:.0375,cache_write:.020833},"kilo/google/gemma-4-26b-a4b-it":{input:.042,output:.22},"kilo/google/gemini-3-pro-image-preview":{input:1,output:6,reasoning:6,cache_read:.1,cache_write:.1875},"kilo/google/gemini-3.5-flash-lite":{input:.15,output:1.25,reasoning:1.25,cache_read:.015,cache_write:.041667},"kilo/google/gemini-3.1-flash-image":{input:.5,output:3},"kilo/google/gemini-3.1-pro-preview":{input:1,output:6,reasoning:6,cache_read:.1,cache_write:.1875},"kilo/google/gemma-3-12b-it":{input:.05,output:.15},"kilo/google/gemini-3.5-flash":{input:.75,output:4.5,reasoning:4.5,cache_read:.075,cache_write:.041667},"kilo/google/gemini-2.5-pro":{input:1.25,output:10,reasoning:10,cache_read:.125,cache_write:.375},"kilo/google/gemini-3-pro-image":{input:2,output:12,reasoning:12,cache_read:.2,cache_write:.375},"kilo/google/gemini-2.5-flash":{input:.3,output:2.5,reasoning:2.5,cache_read:.03,cache_write:.083333},"kilo/google/gemini-3.1-flash-lite-image":{input:.25,output:1.5},"kilo/google/gemini-3.7-flash":{input:.75,output:3.75,reasoning:3.75,cache_read:.075,cache_write:.041667},"kilo/google/gemini-3.1-pro-preview-customtools":{input:2,output:12,reasoning:12,cache_read:.2,cache_write:.375},"kilo/google/gemini-3-flash-preview":{input:.25,output:1.5,reasoning:1.5,cache_read:.025,cache_write:.041667},"kilo/google/gemini-3.8-flash":{input:.75,output:3.75,reasoning:3.75,cache_read:.075,cache_write:.041667},"kilo/google/gemma-3-4b-it":{input:.05,output:.1},"kilo/google/gemini-2.5-flash-lite":{input:.1,output:.4,reasoning:.4,cache_read:.01,cache_write:.083333},"kilo/google/gemini-2.5-pro-preview":{input:1.25,output:10,reasoning:10,cache_read:.125,cache_write:.375},"kilo/google/gemini-3.1-flash-lite-preview":{input:.125,output:.75,reasoning:.75,cache_read:.0125,cache_write:.041667},"kilo/google/gemini-3.1-flash-lite":{input:.125,output:.75,reasoning:.75,cache_read:.0125,cache_write:.041667},"kilo/writer/palmyra-x5":{input:.6,output:6},"kilo/ibm-granite/granite-4.0-h-micro":{input:.017,output:.112},"kilo/ibm-granite/granite-4.2-8b":{input:.06,output:.25,cache_read:.015},"kilo/fireworks/ember-1":{input:3,output:15,cache_read:.3},"kilo/mistralai/mistral-nemo":{input:.15,output:.15,cache_read:.015},"kilo/mistralai/ministral-8b-2512":{input:.15,output:.15,cache_read:.015},"kilo/mistralai/mistral-small-24b-instruct-2501":{input:.05,output:.08},"kilo/mistralai/devstral-2512":{input:.4,output:2,cache_read:.04},"kilo/mistralai/mistral-saba":{input:.2,output:.6,cache_read:.02},"kilo/mistralai/mistral-medium-3-5":{input:1.5,output:7.5},"kilo/mistralai/mistral-medium-3.1":{input:.4,output:2,cache_read:.04},"kilo/mistralai/mistral-small-3.2-24b-instruct":{input:.1,output:.3,cache_read:.01},"kilo/mistralai/mistral-large":{input:2,output:6,cache_read:.2},"kilo/mistralai/mistral-small-2603":{input:.15,output:.6,cache_read:.015},"kilo/mistralai/mistral-medium-3":{input:.4,output:2,cache_read:.04},"kilo/mistralai/voxtral-small-24b-2507":{input:.1,output:.3,cache_read:.01},"kilo/mistralai/mistral-large-2512":{input:.5,output:1.5,cache_read:.05},"kilo/mistralai/mistral-large-2407":{input:2,output:6,cache_read:.2},"kilo/mistralai/ministral-14b-2512":{input:.2,output:.2,cache_read:.02},"kilo/mistralai/mistral-small-3.1-24b-instruct":{input:.351,output:.555},"kilo/mistralai/ministral-3b-2512":{input:.1,output:.1,cache_read:.01},"kilo/mistralai/mixtral-8x22b-instruct":{input:2,output:6,cache_read:.2},"kilo/mistralai/codestral-2508":{input:.3,output:.9,cache_read:.03},"kilo/sakana/fugu-max":{input:2,output:6,cache_read:.25},"kilo/sakana/fugu-ultra-v2":{input:5,output:30,cache_read:.5},"kilo/sakana/fugu-ultra":{input:5,output:30,cache_read:.5},"kilo/sakana/sakana-namazu":{input:.95,output:4,cache_read:.15},"kilo/inclusionai/ling-3.0-flash":{input:.06,output:.18,cache_read:.012},"kilo/inclusionai/ling-3.0-flash-vl":{input:.075,output:.22,cache_read:.015},"kilo/inclusionai/ling-3.0-flash-fin":{input:.06,output:.18,cache_read:.012},"kilo/moonshotai/kimi-k3":{input:3,output:15,cache_read:.3},"kilo/moonshotai/kimi-k2.6":{input:.95,output:4,cache_read:.16},"kilo/moonshotai/kimi-k2-thinking":{input:.6,output:2.5,cache_read:.15},"kilo/moonshotai/kimi-k2.5":{input:.6,output:3},"kilo/moonshotai/kimi-k2-0905":{input:.6,output:2.5},"kilo/moonshotai/kimi-k2":{input:.57,output:2.3},"kilo/moonshotai/kimi-k2.7-code":{input:.6562,output:3.3,cache_read:.18},"kilo/kilo-auto/small":{input:.05,output:.4,reasoning:0,cache_read:.005},"kilo/kilo-auto/efficient":{input:.325,output:1.95,reasoning:0,cache_read:.0325,cache_write:.40625},"kilo/kilo-auto/frontier":{input:5,output:25,reasoning:0,cache_read:.5,cache_write:6.25},"kilo/kilo-auto/balanced":{input:.325,output:1.95,reasoning:0,cache_read:.0325,cache_write:.40625},"kilo/rekaai/reka-flash-3":{input:.1,output:.2},"kilo/rekaai/reka-edge":{input:.1,output:.1},"kilo/nvidia/nemotron-3-nano-30b-a3b":{input:.05,output:.2,cache_read:.03},"kilo/nvidia/nemotron-3.5-lightning":{input:.065,output:.18},"kilo/nvidia/nemotron-3-super-120b-a12b":{input:.08,output:.45},"kilo/nvidia/nemotron-3-ultra-550b-a55b":{input:.5,output:2.2,cache_read:.1},"kilo/nvidia/nemotron-3.5-content-safety":{input:.2,output:.2},"kilo/xiaomi/mimo-v2.6-pro":{input:.435,output:.87,cache_read:.004},"kilo/xiaomi/mimo-v2.5":{input:.14,output:.28,cache_read:.003,tiers:[{input:.8,output:4,cache_read:.16,tier:{type:"context",size:256e3}}],context_over_200k:{input:.8,output:4,cache_read:.16}},"kilo/xiaomi/mimo-v2.6-pro-ultraspeed":{input:4.35,output:8.7,cache_read:.036},"kilo/xiaomi/mimo-v2.5-pro":{input:.435,output:.87,cache_read:.004,tiers:[{input:2,output:6,cache_read:.4,tier:{type:"context",size:256e3}}],context_over_200k:{input:2,output:6,cache_read:.4}},"kilo/xiaomi/mimo-v2.6-flash":{input:.14,output:.28,cache_read:.0028},"kilo/undi95/remm-slerp-l2-13b":{input:.35,output:.65},"kilo/gryphe/mythomax-l2-13b":{input:.08,output:.11},"kilo/minimax/minimax-m2.5":{input:.3,output:1.2,cache_read:.03},"kilo/minimax/minimax-01":{input:.2,output:1.1},"kilo/minimax/minimax-m2-her":{input:.3,output:1.2,cache_read:.03},"kilo/minimax/minimax-m2.7":{input:.3,output:1.2,cache_read:.06},"kilo/minimax/minimax-m1":{input:.4,output:2.2},"kilo/minimax/minimax-m3":{input:.3,output:1.2,cache_read:.06},"kilo/minimax/minimax-m2.1":{input:.3,output:1.2,cache_read:.03},"kilo/minimax/minimax-m2":{input:.3,output:1.2},"kilo/mancer/weaver":{input:.4,output:.75},"kilo/stepfun/step-3.5-flash":{input:.1,output:.3},"kilo/stepfun/step-3.7-flash":{input:.2,output:1.15,cache_read:.04},"kilo/inception/mercury-2.5":{input:.2,output:.75,cache_read:.02},"kilo/inception/mercury-2":{input:.25,output:.75,cache_read:.025},"kilo/amazon/nova-lite-v1":{input:.06,output:.24},"kilo/amazon/nova-2-lite-v1":{input:.3,output:2.5},"kilo/amazon/nova-pro-v1":{input:.8,output:3.2},"kilo/amazon/nova-premier-v1":{input:2.5,output:12.5,cache_read:.625},"kilo/amazon/nova-micro-v1":{input:.035,output:.14},"kilo/relace/relace-search":{input:1,output:3},"kilo/relace/relace-apply-3":{input:.85,output:1.25},"kilo/aion-labs/aion-2.0":{input:.8,output:1.6,cache_read:.2},"kilo/aion-labs/aion-rp-llama-3.1-8b":{input:.8,output:1.6},"kilo/aion-labs/aion-3.0":{input:3,output:6,cache_read:.75},"kilo/aion-labs/aion-3.5":{input:3,output:6,cache_read:.75},"kilo/aion-labs/aion-3.5-mini":{input:.7,output:1.4,cache_read:.18},"kilo/aion-labs/aion-3.0-mini":{input:.7,output:1.4,cache_read:.18},"kilo/qwen/qwen3-235b-a22b-2507":{input:.1495,output:.598},"kilo/qwen/qwen3-vl-235b-a22b-instruct":{input:.26,output:1.04},"kilo/qwen/qwen3.7-max":{input:1.475,output:4.425,cache_read:.295,cache_write:1.84375},"kilo/qwen/qwen3.8-27b":{input:.425,output:2.55,cache_read:.085,cache_write:.53125},"kilo/qwen/qwen3-vl-235b-a22b-thinking":{input:.4,output:4},"kilo/qwen/qwen3.8-2.4t-a95b":{input:2,output:6,cache_read:.25,cache_write:2.5},"kilo/qwen/qwen3.5-27b":{input:.195,output:1.56},"kilo/qwen/qwen3-next-80b-a3b-thinking":{input:.15,output:1.2},"kilo/qwen/qwen3-coder-next":{input:.3,output:1.5},"kilo/qwen/qwen3-coder":{input:.975,output:4.875},"kilo/qwen/qwen3-32b":{input:.08,output:.28},"kilo/qwen/qwen-plus":{input:.26,output:.78,cache_read:.052,cache_write:.325},"kilo/qwen/qwen3.7-flash":{input:.03,output:.13,cache_read:.006,cache_write:.038},"kilo/qwen/qwen3-max":{input:.78,output:3.9,cache_read:.156,cache_write:.975},"kilo/qwen/qwen3-coder-30b-a3b-instruct":{input:.2925,output:1.4625},"kilo/qwen/qwen3.8-omni-flash":{input:.15,output:.47,cache_read:.016},"kilo/qwen/qwen3-vl-30b-a3b-instruct":{input:.13,output:.52},"kilo/qwen/qwen3-235b-a22b-thinking-2507":{input:.23,output:2.3},"kilo/qwen/qwen3-235b-a22b":{input:.455,output:1.82},"kilo/qwen/qwen3.5-122b-a10b":{input:.26,output:2.08},"kilo/qwen/qwen-plus-2025-07-28":{input:.26,output:.78},"kilo/qwen/qwen3.6-35b-a3b":{input:.15,output:1,cache_read:.05},"kilo/qwen/qwen3-next-80b-a3b-instruct":{input:.0975,output:.78},"kilo/qwen/qwen3-vl-30b-a3b-thinking":{input:.2,output:2.4},"kilo/qwen/qwen3.6-flash":{input:.1875,output:1.125,cache_write:.234375},"kilo/qwen/qwen3-coder-flash":{input:.195,output:.975,cache_read:.039,cache_write:.24375},"kilo/qwen/qwen-2.5-coder-32b-instruct":{input:.66,output:1},"kilo/qwen/qwen3.5-flash-02-23":{input:.065,output:.26},"kilo/qwen/qwen3-max-thinking":{input:.78,output:3.9},"kilo/qwen/qwen3-coder-plus":{input:.65,output:3.25,cache_read:.13,cache_write:.8125},"kilo/qwen/qwen3.5-9b":{input:.1,output:.15},"kilo/qwen/qwen3.8-max-prime":{input:4,output:12,cache_read:.5},"kilo/qwen/qwen3.5-plus-20260420":{input:.3,output:1.8,cache_write:.375},"kilo/qwen/qwen3.8-flash":{input:.15,output:.47,cache_read:.016,cache_write:.2},"kilo/qwen/qwen3.5-35b-a3b":{input:.1625,output:1.3},"kilo/qwen/qwen3.6-max-preview":{input:1.027,output:6.162,cache_write:1.28375},"kilo/qwen/qwen3-30b-a3b":{input:.13,output:.52},"kilo/qwen/qwen3.5-397b-a17b":{input:.39,output:2.34},"kilo/qwen/qwen3-8b":{input:.117,output:.455},"kilo/qwen/qwen3-vl-32b-instruct":{input:.104,output:.416},"kilo/qwen/qwen3-vl-8b-instruct":{input:.117,output:.455},"kilo/qwen/qwen3-30b-a3b-instruct-2507":{input:.13,output:.52},"kilo/qwen/qwen2.5-vl-72b-instruct":{input:.8,output:1,cache_read:.4},"kilo/qwen/qwen-2.5-7b-instruct":{input:.1,output:.2},"kilo/qwen/qwen3.5-plus-02-15":{input:.26,output:1.56},"kilo/qwen/qwen-2.5-72b-instruct":{input:.36,output:.4},"kilo/qwen/qwen3-30b-a3b-thinking-2507":{input:.2,output:2.4},"kilo/qwen/qwen3.6-27b":{input:.45,output:2.7},"kilo/qwen/qwen3.6-plus":{input:.325,output:1.95,cache_write:.40625},"kilo/qwen/qwen3-14b":{input:.2275,output:.91},"kilo/qwen/qwen3-vl-8b-thinking":{input:.18,output:2.1},"kilo/qwen/qwen3.7-plus":{input:.32,output:1.28,cache_read:.064,cache_write:.4},"kilo/qwen/qwen3.8-max-0902":{input:2,output:6,cache_read:.25,cache_write:2.5},"kilo/morph/morph-v3-large":{input:.9,output:1.9},"kilo/morph/morph-v3-fast":{input:.8,output:1.2},"kilo/openai/gpt-5.4":{input:2.5,output:15,cache_read:.25},"kilo/openai/gpt-5.4-image-2":{input:8,output:15,cache_read:2},"kilo/openai/gpt-5.4-pro":{input:30,output:180},"kilo/openai/gpt-audio":{input:2.5,output:10},"kilo/openai/gpt-3.5-turbo":{input:.5,output:1.5},"kilo/openai/gpt-6-astra-pro":{input:10,output:50,cache_read:1,cache_write:12.5},"kilo/openai/gpt-5.5-pro":{input:30,output:180},"kilo/openai/gpt-5.4-nano":{input:.2,output:1.25,cache_read:.02},"kilo/openai/gpt-4o-2024-05-13":{input:5,output:15},"kilo/openai/gpt-4o-mini-2024-07-18":{input:.15,output:.6,cache_read:.075},"kilo/openai/gpt-5.2-codex":{input:1.75,output:14,cache_read:.175},"kilo/openai/gpt-5.1-codex":{input:1.25,output:10,cache_read:.13},"kilo/openai/gpt-4o":{input:2.5,output:10,cache_read:1.25},"kilo/openai/gpt-chat-latest":{input:5,output:30,cache_read:.5},"kilo/openai/gpt-audio-mini":{input:.6,output:2.4},"kilo/openai/gpt-5.6-sol-pro":{input:4,output:20,cache_read:.4,cache_write:5},"kilo/openai/gpt-5-mini":{input:.25,output:2,cache_read:.025},"kilo/openai/gpt-5.2-pro":{input:21,output:168},"kilo/openai/o4-mini":{input:1.1,output:4.4,cache_read:.275},"kilo/openai/o3-mini":{input:1.1,output:4.4,cache_read:.55},"kilo/openai/gpt-4":{input:30,output:60},"kilo/openai/gpt-5.3-codex":{input:1.75,output:14,cache_read:.175},"kilo/openai/gpt-4.1-nano":{input:.1,output:.4,cache_read:.025},"kilo/openai/gpt-5-nano":{input:.05,output:.4,cache_read:.005},"kilo/openai/o1":{input:15,output:60,cache_read:7.5},"kilo/openai/gpt-5-pro":{input:15,output:120},"kilo/openai/gpt-3.5-turbo-instruct":{input:1.5,output:2},"kilo/openai/gpt-4o-2024-08-06":{input:2.5,output:10,cache_read:1.25},"kilo/openai/gpt-6-astra":{input:10,output:50,cache_read:1,cache_write:12.5},"kilo/openai/gpt-5.6-luna-pro":{input:.2,output:1.2,cache_read:.02,cache_write:.25},"kilo/openai/gpt-5.1":{input:1.25,output:10,cache_read:.125},"kilo/openai/gpt-5-image-mini":{input:2.5,output:2,cache_read:.25},"kilo/openai/gpt-4o-mini":{input:.15,output:.6,cache_read:.075},"kilo/openai/o3-pro":{input:20,output:80},"kilo/openai/gpt-oss-20b":{input:.018,output:.09},"kilo/openai/gpt-oss-safeguard-20b":{input:.075,output:.3,cache_read:.0375},"kilo/openai/o3-mini-high":{input:1.1,output:4.4,cache_read:.55},"kilo/openai/gpt-3.5-turbo-16k":{input:3,output:4},"kilo/openai/gpt-5.2-chat":{input:1.75,output:14,cache_read:.175},"kilo/openai/gpt-6-sol-pro":{input:2,output:10,cache_read:.2,cache_write:2.5},"kilo/openai/gpt-5-image":{input:10,output:10,cache_read:1.25},"kilo/openai/gpt-5.4-mini":{input:.75,output:4.5,cache_read:.075},"kilo/openai/gpt-5.6-luna":{input:.2,output:1.2,cache_read:.02,cache_write:.25},"kilo/openai/gpt-5.1-codex-max":{input:1.25,output:10,cache_read:.125},"kilo/openai/gpt-5.2":{input:1.75,output:14,cache_read:.175},"kilo/openai/gpt-5.5":{input:5,output:30,cache_read:.5},"kilo/openai/gpt-4.1":{input:2,output:8,cache_read:.5},"kilo/openai/gpt-4o-2024-11-20":{input:2.5,output:10,cache_read:1.25},"kilo/openai/gpt-3.5-turbo-0613":{input:1,output:2},"kilo/openai/gpt-4.1-mini":{input:.4,output:1.6,cache_read:.1},"kilo/openai/gpt-5.6-terra-pro":{input:2,output:12,cache_read:.2,cache_write:2.5},"kilo/openai/gpt-6-luna":{input:.1,output:.5,cache_read:.01,cache_write:.125},"kilo/openai/o4-mini-high":{input:1.1,output:4.4,cache_read:.275},"kilo/openai/gpt-6-luna-pro":{input:.1,output:.5,cache_read:.01,cache_write:.125},"kilo/openai/gpt-5.6-terra":{input:2,output:12,cache_read:.2,cache_write:2.5},"kilo/openai/gpt-4-turbo":{input:10,output:30},"kilo/openai/gpt-oss-120b":{input:.03,output:.17,cache_read:.03},"kilo/openai/gpt-5.1-codex-mini":{input:.25,output:2,cache_read:.03},"kilo/openai/o3":{input:2,output:8,cache_read:.5},"kilo/openai/gpt-5":{input:1.25,output:10,cache_read:.125},"kilo/openai/gpt-5.6-sol":{input:4,output:20,cache_read:.4,cache_write:5},"kilo/openai/gpt-6-sol":{input:2,output:10,cache_read:.2,cache_write:2.5},"kilo/openai/o1-pro":{input:150,output:600},"kilo/microsoft/phi-4":{input:.07,output:.14},"kilo/microsoft/wizardlm-2-8x22b":{input:.62,output:.62},"venice/qwen-3-8-2-4t-a95b":{input:2.5,output:7.5,cache_read:.3125},"venice/openai-gpt-56-luna":{input:.25,output:1.5,cache_read:.025,cache_write:.3125,tiers:[{input:.5,output:2.25,cache_read:.05,cache_write:.625,tier:{type:"context",size:272e3}}],context_over_200k:{input:.5,output:2.25,cache_read:.05,cache_write:.625}},"venice/grok-4-5":{input:2.27,output:6.8,cache_read:.34,tiers:[{input:4.53,output:13.6,cache_read:.68,tier:{type:"context",size:2e5}}],context_over_200k:{input:4.53,output:13.6,cache_read:.68}},"venice/aion-labs-aion-3-5":{input:3.75,output:7.5,cache_read:.9375},"venice/kimi-k3-fast-api":{input:4.5,output:22.5,cache_read:.45},"venice/qwen3-6-27b":{input:.325,output:3.25},"venice/hermes-3-llama-3.1-405b":{input:1.1,output:3},"venice/kimi-k2-7-code":{input:.75,output:3.5,cache_read:.16},"venice/google-gemma-3-27b-it":{input:.12,output:.2},"venice/qwen-3-7-max":{input:2.7,output:8.05,cache_read:.27,cache_write:3.35},"venice/qwen-3-8-max":{input:2.5,output:7.5,cache_read:.3125,cache_write:3.125},"venice/deepseek-v4-flash-0731":{input:.175,output:.35,cache_read:.035},"venice/venice-uncensored-role-play":{input:.5,output:2},"venice/grok-build-0-1":{input:1,output:2,cache_read:.2,tiers:[{input:2,output:4,cache_read:.4,tier:{type:"context",size:2e5}}],context_over_200k:{input:2,output:4,cache_read:.4}},"venice/qwen3-235b-a22b-instruct-2507":{input:.15,output:.75},"venice/openai-gpt-6-luna":{input:.125,output:.625,cache_read:.0125,cache_write:.15625,tiers:[{input:.25,output:.9375,cache_read:.025,cache_write:.3125,tier:{type:"context",size:272e3}}],context_over_200k:{input:.25,output:.9375,cache_read:.025,cache_write:.3125}},"venice/kimi-k3":{input:3.75,output:18.75,cache_read:.375},"venice/openai-gpt-54-mini":{input:.9375,output:5.625,cache_read:.09375},"venice/qwen-3-8-flash":{input:.14,output:.49,cache_read:.014},"venice/olafangensan-glm-4.7-flash-heretic":{input:.07,output:.4,cache_read:.035},"venice/deepseek-v4-flash-0731-fast":{input:.35,output:.7,cache_read:.0875},"venice/claude-opus-4-5":{input:6,output:30,cache_read:.6,cache_write:7.5},"venice/zai-org-glm-5-2":{input:1.4,output:4.4,cache_read:.26},"venice/claude-opus-4-8-fast":{input:12,output:60,cache_read:1.2,cache_write:15},"venice/z-ai-glm-5-turbo":{input:1.2,output:4,cache_read:.24},"venice/zai-org-glm-4.6":{input:.43,output:1.75,cache_read:.08},"venice/openai-gpt-54-pro":{input:37.5,output:225,tiers:[{input:75,output:337.5,tier:{type:"context",size:272e3}}],context_over_200k:{input:75,output:337.5}},"venice/aion-labs-aion-3-0":{input:3.75,output:7.5,cache_read:.9375},"venice/claude-sonnet-4-5":{input:3.75,output:18.75,cache_read:.375,cache_write:4.69},"venice/claude-opus-5-5":{input:4.8,output:24,cache_read:.24,cache_write:6},"venice/kimi-k2-5":{input:.56,output:3.5,cache_read:.22},"venice/claude-fable-5-1":{input:12,output:60,cache_read:.3,cache_write:15},"venice/gemini-3-7-flash":{input:.9375,output:4.6875,cache_read:.09375},"venice/grok-4-20":{input:1.42,output:2.83,cache_read:.23,tiers:[{input:2.83,output:5.67,cache_read:.45,tier:{type:"context",size:2e5}}],context_over_200k:{input:2.83,output:5.67,cache_read:.45}},"venice/openai-gpt-56-sol-pro":{input:5,output:25,cache_read:.5,cache_write:6.25,tiers:[{input:10,output:37.5,cache_read:1,cache_write:12.5,tier:{type:"context",size:272e3}}],context_over_200k:{input:10,output:37.5,cache_read:1,cache_write:12.5}},"venice/seed-2-1-turbo":{input:.625,output:3.125,cache_read:.125},"venice/z-ai-glm-5v-turbo":{input:1.5,output:5,cache_read:.3},"venice/openai-gpt-55-pro":{input:37.5,output:225},"venice/qwen-3-7-plus":{input:.5,output:2,cache_read:.05,cache_write:.625,tiers:[{input:1.5,output:6,cache_read:.15,cache_write:1.875,tier:{type:"context",size:256e3}}],context_over_200k:{input:1.5,output:6,cache_read:.15,cache_write:1.875}},"venice/qwen3-235b-a22b-thinking-2507":{input:.45,output:3.5},"venice/zai-org-glm-4.7-flash":{input:.06,output:.4,cache_read:.01},"venice/claude-opus-5":{input:6,output:30,cache_read:.6,cache_write:7.5},"venice/openai-gpt-6-astra":{input:10,output:50,cache_read:1,cache_write:12.5,tiers:[{input:20,output:75,cache_read:2,cache_write:25,tier:{type:"context",size:272e3}}],context_over_200k:{input:20,output:75,cache_read:2,cache_write:25}},"venice/minimax-m27":{input:.375,output:1.5,cache_read:.06875},"venice/mercury-2-5":{input:.04999999999999999,output:.18749999999999994,cache_read:.004999999999999999},"venice/qwen3-next-80b":{input:.35,output:1.9},"venice/minimax-m25":{input:.27,output:.95,cache_read:.03},"venice/qwen3-6-35b-a3b":{input:.1,output:1},"venice/grok-4-20-multi-agent":{input:1.42,output:2.83,cache_read:.23,tiers:[{input:2.83,output:5.67,cache_read:.45,tier:{type:"context",size:2e5}}],context_over_200k:{input:2.83,output:5.67,cache_read:.45}},"venice/zai-org-glm-4.7":{input:.55,output:2.65,cache_read:.11},"venice/qwen3-5-9b":{input:.1,output:.15},"venice/qwen3-vl-235b-a22b":{input:.21,output:1.9,cache_read:.1},"venice/claude-fable-5":{input:12,output:60,cache_read:1.2,cache_write:15},"venice/qwen3-5-35b-a3b":{input:.3125,output:1.25,cache_read:.15625},"venice/deepseek-v4-pro-0813":{input:1.65,output:4.95,cache_read:.165},"venice/openai-gpt-56-terra":{input:2.5,output:15,cache_read:.25,cache_write:3.125,tiers:[{input:5,output:22.5,cache_read:.5,cache_write:6.25,tier:{type:"context",size:272e3}}],context_over_200k:{input:5,output:22.5,cache_read:.5,cache_write:6.25}},"venice/llama-3.3-70b":{input:.7,output:2.8},"venice/openai-gpt-4o-mini-2024-07-18":{input:.1875,output:.75,cache_read:.09375},"venice/mistral-small-3-2-24b-instruct":{input:.09375,output:.25},"venice/inkling":{input:1.25,output:5.0625,cache_read:.2125},"venice/z-ai-glm-5-3":{input:1.75,output:5.5,cache_read:.325},"venice/google-gemma-4-26b-a4b-it":{input:.13,output:.4,cache_read:.05},"venice/kimi-k2-6":{input:.75,output:3.5,cache_read:.16},"venice/openai-gpt-6-astra-pro":{input:12.5,output:62.5,cache_read:1.25,cache_write:15.625,tiers:[{input:25,output:93.75,cache_read:2.5,cache_write:31.25,tier:{type:"context",size:272e3}}],context_over_200k:{input:25,output:93.75,cache_read:2.5,cache_write:31.25}},"venice/openai-gpt-54":{input:3.13,output:18.8,cache_read:.313},"venice/gemma-4-uncensored":{input:.1625,output:.5},"venice/claude-opus-4-8":{input:6,output:30,cache_read:.6,cache_write:7.5},"venice/minimax-m3-preview":{input:.3,output:1.2,cache_read:.06},"venice/openai-gpt-oss-120b":{input:.07,output:.3},"venice/claude-sonnet-5":{input:3,output:15,cache_read:.3,cache_write:3.75},"venice/deepseek-v4-1-flash":{input:.375,output:1.5,cache_read:.0075},"venice/gemini-3-8-flash":{input:.9375,output:4.6875,cache_read:.09375},"venice/qwen-3-6-plus":{input:.625,output:3.75,cache_read:.0625,cache_write:.78,tiers:[{input:2.5,output:7.5,cache_read:.0625,cache_write:.78,tier:{type:"context",size:256e3}}],context_over_200k:{input:2.5,output:7.5,cache_read:.0625,cache_write:.78}},"venice/claude-opus-4-6":{input:6,output:30,cache_read:.6,cache_write:7.5},"venice/openai-gpt-6-sol":{input:2.5,output:12.5,cache_read:.25,cache_write:3.125,tiers:[{input:5,output:18.75,cache_read:.5,cache_write:6.25,tier:{type:"context",size:272e3}}],context_over_200k:{input:5,output:18.75,cache_read:.5,cache_write:6.25}},"venice/qwen-3-8-27b":{input:.45,output:3.2},"venice/openai-gpt-53-codex":{input:2.19,output:17.5,cache_read:.219},"venice/aion-labs-aion-3-0-mini":{input:.875,output:1.75,cache_read:.225},"venice/grok-4-3":{input:1.42,output:2.83,cache_read:.23,tiers:[{input:2.83,output:5.67,cache_read:.45,tier:{type:"context",size:2e5}}],context_over_200k:{input:2.83,output:5.67,cache_read:.45}},"venice/aion-labs-aion-3-5-mini":{input:.875,output:1.75,cache_read:.225},"venice/openai-gpt-56-terra-pro":{input:2.5,output:15,cache_read:.25,cache_write:3.125,tiers:[{input:5,output:22.5,cache_read:.5,cache_write:6.25,tier:{type:"context",size:272e3}}],context_over_200k:{input:5,output:22.5,cache_read:.5,cache_write:6.25}},"venice/gemini-3-flash-preview":{input:.7,output:3.75,cache_read:.07},"venice/mercury-2":{input:.3125,output:.9375,cache_read:.03125},"venice/grok-4-6":{input:2.27,output:6.8,cache_read:.57,tiers:[{input:4.53,output:13.6,cache_read:1.13,tier:{type:"context",size:2e5}}],context_over_200k:{input:4.53,output:13.6,cache_read:1.13}},"venice/zai-org-glm-5-1":{input:1.54,output:4.84,cache_read:.286},"venice/xiaomi-mimo-v2-5":{input:.4,output:2,cache_read:.08},"venice/openai-gpt-4o-2024-11-20":{input:3.125,output:12.5},"venice/openai-gpt-52":{input:2.19,output:17.5,cache_read:.219},"venice/gemini-3-6-flash":{input:.9375,output:4.6875,cache_read:.09375},"venice/gemini-3-1-pro-preview":{input:2.5,output:15,cache_read:.5,cache_write:.5,tiers:[{input:5,output:22.5,cache_read:.5,cache_write:.5,tier:{type:"context",size:2e5}}],context_over_200k:{input:5,output:22.5,cache_read:.5,cache_write:.5}},"venice/deepseek-v4-pro":{input:1.65,output:3.301,cache_read:.33},"venice/claude-sonnet-4-6":{input:3.6,output:18,cache_read:.36,cache_write:4.5},"venice/claude-opus-5-fast":{input:12,output:60,cache_read:1.2,cache_write:15},"venice/openai-gpt-55":{input:6.25,output:37.5,cache_read:.625,tiers:[{input:12.5,output:56.25,cache_read:1.25,tier:{type:"context",size:272e3}}],context_over_200k:{input:12.5,output:56.25,cache_read:1.25}},"venice/openai-gpt-56-sol":{input:5,output:25,cache_read:.5,cache_write:6.25,tiers:[{input:10,output:37.5,cache_read:1,cache_write:12.5,tier:{type:"context",size:272e3}}],context_over_200k:{input:10,output:37.5,cache_read:1,cache_write:12.5}},"venice/qwen3-coder-480b-a35b-instruct-turbo":{input:.35,output:1.5,cache_read:.04},"venice/z-ai-glm-5-3-flash":{input:.15,output:.5,cache_read:.03},"venice/zai-org-glm-5":{input:1,output:3.2,cache_read:.2},"venice/grok-4-7":{input:2.27,output:6.8,cache_read:.57,tiers:[{input:4.53,output:13.6,cache_read:1.13,tier:{type:"context",size:2e5}}],context_over_200k:{input:4.53,output:13.6,cache_read:1.13}},"venice/deepseek-v3.2":{input:.33,output:.48,cache_read:.16},"venice/gemini-3-5-flash-lite":{input:.375,output:3.125,cache_read:.0375},"venice/gemini-3-5-flash":{input:1.55,output:9.45,cache_read:.155,cache_write:.086},"venice/google-gemma-4-31b-it":{input:.12,output:.36,cache_read:.09},"venice/claude-opus-4-7":{input:6,output:30,cache_read:.6,cache_write:7.5},"venice/venice-uncensored-1-2":{input:.2,output:.9},"venice/qwen3-5-397b-a17b":{input:.75,output:4.5},"venice/llama-3.2-3b":{input:.15,output:.6},"venice/openai-gpt-56-luna-pro":{input:.25,output:1.5,cache_read:.025,cache_write:.3125,tiers:[{input:.5,output:2.25,cache_read:.05,cache_write:.625,tier:{type:"context",size:272e3}}],context_over_200k:{input:.5,output:2.25,cache_read:.05,cache_write:.625}},"venice/nvidia-nemotron-3-ultra-550b-a55b":{input:.625,output:3.125,cache_read:.1875},"venice/deepseek-v4-flash":{input:.138,output:.275,cache_read:.028},"venice/nvidia-nemotron-3-nano-30b-a3b":{input:.075,output:.3},"ai21/jamba-large":{input:2,output:8},"ai21/jamba-mini":{input:.2,output:.4},"inference/meta/llama-3.1-8b-instruct":{input:.025,output:.025},"inference/meta/llama-3.2-11b-vision-instruct":{input:.055,output:.055},"inference/meta/llama-3.2-1b-instruct":{input:.01,output:.01},"inference/meta/llama-3.2-3b-instruct":{input:.02,output:.02},"inference/google/gemma-3":{input:.15,output:.3},"inference/osmosis/osmosis-structure-0.6b":{input:.1,output:.5},"inference/mistral/mistral-nemo-12b-instruct":{input:.038,output:.1},"inference/qwen/qwen3-embedding-4b":{input:.01,output:0},"inference/qwen/qwen-2.5-7b-vision-instruct":{input:.2,output:.2},"thinkingmachines/thinkingmachines/Inkling:peft:262144":{input:3.74,output:9.36,cache_read:.748},"thinkingmachines/thinkingmachines/Inkling":{input:1.87,output:4.68,cache_read:.374},"melious/glm-5.3-flash":{input:.11592,output:.46368,cache_read:.023184},"melious/deepseek-v4-flash-0731":{input:.11592,output:.2898,cache_read:.023184},"melious/kimi-k3":{input:3.1878,output:15.939,cache_read:.788256},"melious/glm-5":{input:1.10124,output:3.36168,cache_read:.266616},"melious/deepseek-v4.1-flash":{input:.23184,output:1.1592,cache_read:.011592},"melious/kimi-k2.6":{input:.81144,output:4.0572,cache_read:.266616},"melious/kimi-k2.5":{input:.5796,output:2.95596,cache_read:.139104},"melious/glm-5.1":{input:1.50696,output:4.6368,cache_read:.370944},"melious/deepseek-r1-0528":{input:.69552,output:2.78208,cache_read:.185472},"melious/deepseek-v3.2":{input:.34776,output:.5796,cache_read:.092736},"melious/glm-5.3":{input:1.1592,output:3.4776,cache_read:.23184},"melious/kimi-k2.7-code":{input:.81144,output:3.4776,cache_read:.220248},"berget/google/gemma-4-31B-it":{input:.275,output:.55},"berget/Qwen/Qwen3.8-27B-FP8":{input:.46,output:3.48},"berget/mistralai/Mistral-Small-3.2-24B-Instruct-2506":{input:.33,output:.33},"berget/moonshotai/Kimi-K3":{input:3,output:15},"berget/zai-org/GLM-5.2":{input:1.54,output:4.84},"berget/zai-org/GLM-5.3-Flash":{input:.29,output:.58},"abacus/gpt-5.4":{input:2.5,output:15,cache_read:.25},"abacus/grok-4-1-fast-non-reasoning":{input:.2,output:.5},"abacus/qwen3.7-max":{input:2.5,output:7.5},"abacus/gemini-3.1-flash-image-preview":{input:.5,output:3},"abacus/gpt-5.4-nano":{input:.2,output:1.25,cache_read:.02},"abacus/gpt-5.2-codex":{input:1.75,output:14,cache_read:.175},"abacus/gpt-5.1-codex":{input:1.25,output:10,cache_read:.125},"abacus/gemini-2.5-flash-image":{input:.3,output:30},"abacus/gpt-4o":{input:2.5,output:10,cache_read:1.25},"abacus/qwen3.8-max":{input:2,output:6},"abacus/gpt-5-codex":{input:1.25,output:10,cache_read:.125},"abacus/gpt-5-mini":{input:.25,output:2,cache_read:.025},"abacus/claude-3-7-sonnet-20250219":{input:3,output:15},"abacus/qwen-2.5-coder-32b":{input:.79,output:.79},"abacus/o4-mini":{input:1.1,output:4.4},"abacus/o3-mini":{input:1.1,output:4.4,cache_read:.55},"abacus/gpt-5.3-codex":{input:1.75,output:14,cache_read:.18},"abacus/gpt-4.1-nano":{input:.1,output:.4,cache_read:.025},"abacus/muse-spark-1.1":{input:1.25,output:4.25,cache_read:.15},"abacus/gpt-5-nano":{input:.05,output:.4,cache_read:.005},"abacus/gpt-5.2-chat-latest":{input:1.75,output:14},"abacus/gpt-5.1-chat-latest":{input:1.25,output:10},"abacus/qwen3-max":{input:1.2,output:6},"abacus/claude-opus-4-20250514":{input:15,output:75},"abacus/gemini-3.6-flash":{input:1.5,output:7.5,cache_read:.15},"abacus/kimi-k2-turbo-preview":{input:.15,output:8},"abacus/grok-4.3":{input:1.25,output:2.5,cache_read:.2},"abacus/grok-4-fast-non-reasoning":{input:.2,output:.5},"abacus/claude-opus-4-1-20250805":{input:15,output:75},"abacus/claude-opus-4-5-20251101":{input:5,output:25},"abacus/gemini-3-pro-image-preview":{input:2,output:12,cache_read:.2},"abacus/gemini-3.5-flash-lite":{input:.3,output:2.5,cache_read:.03},"abacus/gemini-3.1-flash-image":{input:.5,output:3},"abacus/gemini-3.1-pro-preview":{input:2,output:12,cache_read:.2},"abacus/grok-4.5":{input:2,output:6},"abacus/kimi-k2.5":{input:.6,output:3},"abacus/gpt-5.1":{input:1.25,output:10,cache_read:.125},"abacus/llama-3.3-70b-versatile":{input:.59,output:.79},"abacus/claude-opus-5":{input:5,output:25},"abacus/mimo-v2-pro":{input:1,output:3,cache_read:.2},"abacus/gpt-4o-mini":{input:.15,output:.6},"abacus/o3-pro":{input:20,output:40},"abacus/gemini-3.5-flash":{input:1.5,output:9,cache_read:.15},"abacus/gemini-2.5-pro":{input:1.25,output:10,cache_read:.125},"abacus/gemini-3-pro-image":{input:2,output:12,cache_read:.2},"abacus/gemini-2.5-flash":{input:.3,output:2.5,cache_read:.03},"abacus/claude-fable-5":{input:10,output:50},"abacus/muse-spark-1.2":{input:1.25,output:4.25,cache_read:.15},"abacus/gpt-5.4-mini":{input:.75,output:4.5,cache_read:.075},"abacus/gpt-5.6-luna":{input:1,output:6,cache_read:.1},"abacus/gpt-5.1-codex-max":{input:1.25,output:10},"abacus/gpt-5.2":{input:1.75,output:14,cache_read:.175},"abacus/claude-opus-4-8":{input:5,output:25},"abacus/grok-code-fast-1":{input:.2,output:1.5},"abacus/gpt-5.5":{input:5,output:30,cache_read:.5},"abacus/claude-sonnet-4-5-20250929":{input:3,output:15},"abacus/gpt-4.1":{input:2,output:8,cache_read:.5},"abacus/claude-sonnet-5":{input:3,output:15},"abacus/claude-opus-4-6":{input:5,output:25},"abacus/gemini-3.7-flash":{input:.75,output:3.75,cache_read:.075},"abacus/gpt-5.3-codex-xhigh":{input:1.75,output:14},"abacus/gemini-3-flash-preview":{input:.5,output:3,cache_read:.05},"abacus/gpt-4o-2024-11-20":{input:2.5,output:10},"abacus/claude-haiku-4-5-20251001":{input:1,output:5},"abacus/gpt-4.1-mini":{input:.4,output:1.6,cache_read:.1},"abacus/claude-sonnet-4-6":{input:3,output:15},"abacus/gpt-5.3-chat-latest":{input:1.75,output:14},"abacus/claude-sonnet-4-20250514":{input:3,output:15},"abacus/gpt-5.6-terra":{input:2.5,output:15,cache_read:.25},"abacus/o3":{input:2,output:8,cache_read:.5},"abacus/claude-opus-4-7":{input:5,output:25},"abacus/gpt-5":{input:1.25,output:10,cache_read:.125},"abacus/grok-4.6":{input:2,output:6,cache_read:.5},"abacus/gemini-3.1-flash-lite-preview":{input:.25,output:1.5,cache_read:.025,cache_write:1},"abacus/route-llm":{input:3,output:15},"abacus/grok-4-0709":{input:3,output:15},"abacus/gpt-5.6-sol":{input:5,output:30,cache_read:.5},"abacus/gemini-3.1-flash-lite":{input:.25,output:1.5,cache_read:.025},"abacus/deepseek/deepseek-v3.1":{input:.55,output:1.66},"abacus/meta-llama/Meta-Llama-3.3-70B-Instruct":{input:.59,output:.79},"abacus/meta-llama/Meta-Llama-3.1-8B-Instruct":{input:.02,output:.05},"abacus/meta-llama/Meta-Llama-3.1-405B-Instruct-Turbo":{input:3.5,output:3.5},"abacus/meta-llama/Llama-4-Maverick-17B-128E-Instruct-FP8":{input:.14,output:.59},"abacus/thinkingmachines/Inkling":{input:3.74,output:9.36,cache_read:.748},"abacus/google/gemma-4-31b-it":{input:.14,output:.4},"abacus/Qwen/QwQ-32B":{input:.4,output:.4},"abacus/Qwen/Qwen3-235B-A22B-Instruct-2507":{input:.13,output:.6},"abacus/Qwen/Qwen2.5-72B-Instruct":{input:.11,output:.38},"abacus/Qwen/Qwen3-32B":{input:.09,output:.29},"abacus/Qwen/Qwen3-Coder-480B-A35B-Instruct":{input:.29,output:1.2},"abacus/Qwen/Qwen3.6-27B":{input:.32,output:3.2},"abacus/deepseek-ai/DeepSeek-R1":{input:3,output:7},"abacus/deepseek-ai/DeepSeek-V4-Flash":{input:.14,output:.28,cache_read:.03},"abacus/deepseek-ai/DeepSeek-V4-Pro":{input:1.74,output:3.48,cache_read:.15},"abacus/deepseek-ai/DeepSeek-V3.2":{input:.27,output:.4},"abacus/deepseek-ai/DeepSeek-V3.1-Terminus":{input:.27,output:1},"abacus/MiniMaxAI/MiniMax-M3":{input:.3,output:1.2},"abacus/MiniMaxAI/MiniMax-M2.7":{input:.3,output:1.2},"abacus/moonshotai/Kimi-K2.6":{input:.95,output:4,cache_read:.19},"abacus/moonshotai/Kimi-K3":{input:3,output:15,cache_read:.3},"abacus/moonshotai/Kimi-K2.7-Code":{input:.95,output:4,cache_read:.19},"abacus/zai-org/GLM-5.1":{input:1.4,output:4.4,cache_read:.26},"abacus/zai-org/GLM-5.2":{input:1.4,output:4.4,cache_read:.26},"abacus/zai-org/GLM-4.7":{input:.6,output:2.2},"abacus/zai-org/GLM-5":{input:1,output:3.2},"abacus/zai-org/GLM-4.6":{input:.6,output:2.2},"abacus/zai-org/GLM-4.5":{input:.6,output:2.2},"abacus/openai/gpt-oss-120b":{input:.08,output:.44},"novita-ai/kwaipilot/kat-coder-pro":{input:.3,output:1.2,cache_read:.06},"novita-ai/deepseek/deepseek-prover-v2-671b":{input:.7,output:2.5},"novita-ai/deepseek/deepseek-r1-distill-qwen-14b":{input:.15,output:.15},"novita-ai/deepseek/deepseek-v3-0324":{input:.27,output:1.12,cache_read:.135},"novita-ai/deepseek/deepseek-r1-distill-llama-70b":{input:.8,output:.8},"novita-ai/deepseek/deepseek-v3-turbo":{input:.4,output:1.3},"novita-ai/deepseek/deepseek-r1-0528-qwen3-8b":{input:.06,output:.09},"novita-ai/deepseek/deepseek-v3.1-terminus":{input:.27,output:1,cache_read:.135},"novita-ai/deepseek/deepseek-ocr-2":{input:.03,output:.03},"novita-ai/deepseek/deepseek-ocr":{input:.03,output:.03},"novita-ai/deepseek/deepseek-r1-turbo":{input:.7,output:2.5},"novita-ai/deepseek/deepseek-v3.2-exp":{input:.27,output:.41},"novita-ai/deepseek/deepseek-r1-distill-qwen-32b":{input:.3,output:.3},"novita-ai/deepseek/deepseek-v3.1":{input:.27,output:1,cache_read:.135},"novita-ai/deepseek/deepseek-v4-pro":{input:1.6,output:3.2,cache_read:.135},"novita-ai/deepseek/deepseek-r1-0528":{input:.7,output:2.5,cache_read:.35},"novita-ai/deepseek/deepseek-v3.2":{input:.269,output:.4,cache_read:.1345},"novita-ai/deepseek/deepseek-v4-flash":{input:.14,output:.28,cache_read:.028},"novita-ai/meta-llama/llama-4-maverick-17b-128e-instruct-fp8":{input:.27,output:.85},"novita-ai/meta-llama/llama-3-70b-instruct":{input:.51,output:.74},"novita-ai/meta-llama/llama-3.3-70b-instruct":{input:.135,output:.4},"novita-ai/meta-llama/llama-3.1-8b-instruct":{input:.02,output:.05},"novita-ai/meta-llama/llama-4-scout-17b-16e-instruct":{input:.18,output:.59},"novita-ai/meta-llama/llama-3.2-3b-instruct":{input:.03,output:.05},"novita-ai/meta-llama/llama-3-8b-instruct":{input:.04,output:.04},"novita-ai/nousresearch/hermes-2-pro-llama-3-8b":{input:.14,output:.14},"novita-ai/xiaomimimo/mimo-v2-flash":{input:.1,output:.3,cache_read:.3},"novita-ai/xiaomimimo/mimo-v2-pro":{input:2,output:6,cache_read:.4,tiers:[{input:2,output:6,cache_read:.4,tier:{type:"context",size:256e3}}],context_over_200k:{input:2,output:6,cache_read:.4}},"novita-ai/xiaomimimo/mimo-v2.5-pro":{input:.522,output:1.044,cache_read:.0043,tiers:[{input:.522,output:1.044,cache_read:.0043,tier:{type:"context",size:256e3}}],context_over_200k:{input:.522,output:1.044,cache_read:.0043}},"novita-ai/baidu/ernie-4.5-vl-28b-a3b":{input:.14,output:.56},"novita-ai/baidu/ernie-4.5-vl-28b-a3b-thinking":{input:.39,output:.39},"novita-ai/baidu/ernie-4.5-21B-a3b-thinking":{input:.07,output:.28},"novita-ai/baidu/ernie-4.5-21B-a3b":{input:.07,output:.28},"novita-ai/baidu/ernie-4.5-vl-424b-a47b":{input:.42,output:1.25},"novita-ai/baidu/ernie-4.5-300b-a47b-paddle":{input:.28,output:1.1},"novita-ai/google/gemma-4-31b-it":{input:.14,output:.4},"novita-ai/google/gemma-3-27b-it":{input:.119,output:.2},"novita-ai/google/gemma-4-26b-a4b-it":{input:.13,output:.4},"novita-ai/google/gemma-3-12b-it":{input:.05,output:.1},"novita-ai/minimaxai/minimax-m1-80k":{input:.55,output:2.2},"novita-ai/mistralai/mistral-nemo":{input:.04,output:.17},"novita-ai/inclusionai/ring-2.6-1t":{input:.3,output:2.5,cache_read:.06},"novita-ai/inclusionai/ling-2.6-1t":{input:.3,output:2.5,cache_read:.06},"novita-ai/inclusionai/ling-2.6-flash":{input:.1,output:.3,cache_read:.02},"novita-ai/moonshotai/kimi-k3":{input:3,output:15,cache_read:.3},"novita-ai/moonshotai/kimi-k2.6":{input:.8,output:3.4,cache_read:.16},"novita-ai/moonshotai/kimi-k2-thinking":{input:.6,output:2.5,cache_read:.15},"novita-ai/moonshotai/kimi-k2.5":{input:.6,output:3,cache_read:.1},"novita-ai/moonshotai/kimi-k2-instruct":{input:.57,output:2.3},"novita-ai/moonshotai/kimi-k2-0905":{input:.6,output:2.5},"novita-ai/moonshotai/kimi-k2.7-code":{input:.95,output:4,cache_read:.19},"novita-ai/zai-org/glm-4.6v":{input:.3,output:.9,cache_read:.055},"novita-ai/zai-org/glm-4.5":{input:.6,output:2.2,cache_read:.11},"novita-ai/zai-org/glm-4.6":{input:.55,output:2.2,cache_read:.11},"novita-ai/zai-org/glm-5":{input:1,output:3.2,cache_read:.2},"novita-ai/zai-org/glm-4.5v":{input:.6,output:1.8,cache_read:.11},"novita-ai/zai-org/glm-4.7-flash":{input:.07,output:.4,cache_read:.01},"novita-ai/zai-org/glm-4.7":{input:.6,output:2.2,cache_read:.11},"novita-ai/zai-org/glm-5.2":{input:1.4,output:4.4,cache_read:.26},"novita-ai/zai-org/glm-5.1":{input:1.38,output:4.4,cache_read:.26},"novita-ai/zai-org/autoglm-phone-9b-multilingual":{input:.035,output:.138},"novita-ai/zai-org/glm-4.5-air":{input:.13,output:.85,cache_read:.025},"novita-ai/gryphe/mythomax-l2-13b":{input:.09,output:.09},"novita-ai/minimax/minimax-m2.5":{input:.3,output:1.2,cache_read:.03},"novita-ai/minimax/minimax-m2.7":{input:.3,output:1.2,cache_read:.06},"novita-ai/minimax/minimax-m2.7-highspeed":{input:.6,output:2.4,cache_read:.06,cache_write:.375},"novita-ai/minimax/minimax-m2.5-highspeed":{input:.6,output:2.4,cache_read:.03},"novita-ai/minimax/minimax-m2.1":{input:.3,output:1.2,cache_read:.03},"novita-ai/minimax/minimax-m2":{input:.3,output:1.2,cache_read:.03},"novita-ai/paddlepaddle/paddleocr-vl":{input:.02,output:.02},"novita-ai/qwen/qwen3-vl-235b-a22b-instruct":{input:.3,output:1.5},"novita-ai/qwen/qwen3.7-max":{input:1.25,output:3.75,cache_read:.25,cache_write:1.5625},"novita-ai/qwen/qwen3-vl-235b-a22b-thinking":{input:.98,output:3.95},"novita-ai/qwen/qwen3.5-27b":{input:.3,output:2.4},"novita-ai/qwen/qwen3-235b-a22b-instruct-2507":{input:.09,output:.58},"novita-ai/qwen/qwen3-next-80b-a3b-thinking":{input:.15,output:1.5},"novita-ai/qwen/qwen3-coder-next":{input:.2,output:1.5},"novita-ai/qwen/qwen3-omni-30b-a3b-instruct":{input:.25,output:.97,input_audio:2.2,output_audio:1.788},"novita-ai/qwen/qwen3-omni-30b-a3b-thinking":{input:.25,output:.97,input_audio:2.2,output_audio:1.788},"novita-ai/qwen/qwen3-max":{input:2.11,output:8.45},"novita-ai/qwen/qwen3-235b-a22b-fp8":{input:.2,output:.8},"novita-ai/qwen/qwen3-coder-480b-a35b-instruct":{input:.38,output:1.55},"novita-ai/qwen/qwen3-coder-30b-a3b-instruct":{input:.07,output:.27},"novita-ai/qwen/qwen3-vl-30b-a3b-instruct":{input:.2,output:.7},"novita-ai/qwen/qwen3-235b-a22b-thinking-2507":{input:.3,output:3},"novita-ai/qwen/qwen2.5-7b-instruct":{input:.07,output:.07},"novita-ai/qwen/qwen3.5-122b-a10b":{input:.4,output:3.2},"novita-ai/qwen/qwen3-30b-a3b-fp8":{input:.09,output:.45},"novita-ai/qwen/qwen3-next-80b-a3b-instruct":{input:.15,output:1.5},"novita-ai/qwen/qwen3-vl-30b-a3b-thinking":{input:.2,output:1},"novita-ai/qwen/qwen-mt-plus":{input:.25,output:.75},"novita-ai/qwen/qwen3-32b-fp8":{input:.1,output:.45},"novita-ai/qwen/qwen3-8b-fp8":{input:.035,output:.138},"novita-ai/qwen/qwen3.5-35b-a3b":{input:.25,output:2},"novita-ai/qwen/qwen3.5-397b-a17b":{input:.6,output:3.6},"novita-ai/qwen/qwen3-vl-8b-instruct":{input:.08,output:.5},"novita-ai/qwen/qwen2.5-vl-72b-instruct":{input:.8,output:.8},"novita-ai/qwen/qwen-2.5-72b-instruct":{input:.38,output:.4},"novita-ai/qwen/qwen3-4b-fp8":{input:.03,output:.03},"novita-ai/baichuan/baichuan-m2-32b":{input:.07,output:.07},"novita-ai/openai/gpt-oss-20b":{input:.04,output:.15},"novita-ai/openai/gpt-oss-120b":{input:.05,output:.25},"novita-ai/microsoft/wizardlm-2-8x22b":{input:.62,output:.62},"novita-ai/sao10K/l3-70b-euryale-v2.1":{input:1.48,output:1.48},"novita-ai/sao10K/L3-8B-stheno-v3.2":{input:.05,output:.05},"novita-ai/sao10K/l3-8b-lunaris":{input:.05,output:.05},"novita-ai/sao10K/l31-70b-euryale-v2.2":{input:1.48,output:1.48},"302ai/grok-4-1-fast-reasoning":{input:.2,output:.5},"302ai/glm-4.6v":{input:.145,output:.43},"302ai/gpt-5.4":{input:2.5,output:15,cache_read:.25,cache_write:0,tiers:[{input:5,output:22.5,tier:{type:"context",size:272e3}}],context_over_200k:{input:5,output:22.5}},"302ai/glm-4.5":{input:.286,output:1.142},"302ai/claude-haiku-4-5":{input:1,output:5},"302ai/qwen3.7-max":{input:1.8,output:5.3},"302ai/gemini-3.1-flash-image-preview":{input:.5,output:60},"302ai/MiniMax-M3":{input:.72,output:2.88},"302ai/gpt-5.4-nano":{input:.2,output:1.25},"302ai/gemini-3.5-flash-thinking":{input:1.5,output:9},"302ai/gemini-3-pro-preview":{input:2,output:12},"302ai/glm-5v-turbo":{input:.72,output:3.2},"302ai/gemini-2.5-flash-image":{input:.3,output:30},"302ai/gpt-4o":{input:2.5,output:10},"302ai/glm-5.3-flash":{input:.075,output:.25},"302ai/glm-4.6":{input:.286,output:1.142},"302ai/qwen3-235b-a22b-instruct-2507":{input:.29,output:1.143},"302ai/qwen3.8-max":{input:2.16,output:6.36},"302ai/kimi-k3":{input:3,output:15},"302ai/gpt-5.6-sol-pro":{input:5,output:30},"302ai/gpt-5-mini":{input:.25,output:2},"302ai/qwen3.5-plus":{input:.12,output:.69},"302ai/claude-sonnet-4-6-thinking":{input:3,output:15},"302ai/glm-5":{input:.6,output:2.6},"302ai/gpt-4.1-nano":{input:.1,output:.4},"302ai/grok-4-fast-reasoning":{input:.2,output:.5},"302ai/kimi-k2.6":{input:.95,output:4},"302ai/gpt-5.2-chat-latest":{input:1.75,output:14},"302ai/gpt-5.1-chat-latest":{input:1.25,output:10},"302ai/MiniMax-M2.1":{input:.3,output:1.2},"302ai/gemini-2.5-flash-preview-09-2025":{input:.3,output:2.5},"302ai/glm-4.5v":{input:.29,output:.86},"302ai/claude-fable-5-1":{input:10,output:50},"302ai/gemini-3.6-flash":{input:1.5,output:7.5},"302ai/claude-opus-5-thinking":{input:5,output:25},"302ai/qwen3-coder-480b-a35b-instruct":{input:.86,output:3.43},"302ai/doubao-seed-1-6-vision-250815":{input:.114,output:1.143},"302ai/claude-sonnet-4-5-20250929-thinking":{input:3,output:15},"302ai/grok-4.3":{input:1.25,output:2.5},"302ai/kimi-k2-thinking":{input:.575,output:2.3},"302ai/grok-4-fast-non-reasoning":{input:.2,output:.5},"302ai/grok-4.20-beta-0309-reasoning":{input:2,output:6},"302ai/claude-opus-4-1-20250805":{input:15,output:75},"302ai/gpt-5-pro":{input:15,output:120},"302ai/claude-opus-4-5-20251101":{input:5,output:25},"302ai/gemini-3-pro-image-preview":{input:2,output:120},"302ai/gemini-3.5-flash-lite":{input:.3,output:2.5},"302ai/gemini-2.0-flash-lite":{input:.075,output:.3},"302ai/qwen3-235b-a22b":{input:.29,output:2.86},"302ai/gpt-6-astra":{input:10,output:50},"302ai/gemini-3.1-pro-preview":{input:2,output:12},"302ai/grok-4.5":{input:2,output:6},"302ai/gpt-5.6-luna-pro":{input:.2,output:1.2},"302ai/kimi-k2.5":{input:.66,output:3.3},"302ai/gpt-5.1":{input:1.25,output:10},"302ai/claude-opus-5":{input:5,output:25},"302ai/qwen3.7-max-2026-06-08":{input:1.8,output:5.3},"302ai/qwen3.6-35b-a3b":{input:.283,output:1.705},"302ai/kimi-k2-0905-preview":{input:.632,output:2.53},"302ai/deepseek-flash":{input:.15,output:.6,cache_read:.003},"302ai/gemini-3.5-flash":{input:1.5,output:9},"302ai/gemini-2.5-pro":{input:1.25,output:10},"302ai/qwen3.6-flash":{input:.188,output:1.133},"302ai/gemini-2.5-flash":{input:.3,output:2.5},"302ai/claude-fable-5":{input:10,output:50},"302ai/doubao-seed-1-6-thinking-250715":{input:.121,output:1.21},"302ai/gpt-5-thinking":{input:1.25,output:10},"302ai/MiniMax-M1":{input:.132,output:1.254},"302ai/MiniMax-M2.5":{input:.3,output:1.2},"302ai/gpt-5.4-mini":{input:.75,output:4.5},"302ai/glm-4.7":{input:.286,output:1.142},"302ai/gpt-5.6-luna":{input:.2,output:1.2},"302ai/MiniMax-M2.7":{input:.3,output:1.2},"302ai/qwen3.8-flash":{input:.18,output:.564},"302ai/gpt-5.2":{input:1.75,output:14},"302ai/deepseek-v3.2-thinking":{input:.29,output:.43},"302ai/claude-opus-4-8":{input:5,output:25},"302ai/gpt-5.5":{input:5,output:30},"302ai/claude-sonnet-4-5-20250929":{input:3,output:15},"302ai/gpt-4.1":{input:2,output:8},"302ai/claude-sonnet-5":{input:2,output:10},"302ai/qwen3.5-35b-a3b":{input:.06,output:.46},"302ai/qwen3-30b-a3b":{input:.11,output:1.08},"302ai/gemini-3.7-flash":{input:.75,output:3.75},"302ai/glm-5.2":{input:1.4,output:4.4},"302ai/gemini-2.5-flash-nothink":{input:.3,output:2.5},"302ai/doubao-seed-1-8-251215":{input:.114,output:.286},"302ai/claude-opus-4-1-20250805-thinking":{input:15,output:75},"302ai/glm-5.1":{input:1.4,output:4.4},"302ai/gemini-3-flash-preview":{input:.5,output:3},"302ai/claude-haiku-4-5-20251001":{input:1,output:5},"302ai/mistral-large-2512":{input:1.1,output:3.3},"302ai/MiniMax-M2":{input:.33,output:1.32},"302ai/gemini-2.5-flash-lite-preview-09-2025":{input:.1,output:.4},"302ai/gpt-4.1-mini":{input:.4,output:1.6},"302ai/gpt-5.6-terra-pro":{input:2,output:12},"302ai/gemini-3.8-flash":{input:.75,output:3.75},"302ai/ministral-14b-2512":{input:.33,output:.33},"302ai/glm-5-turbo":{input:.72,output:3.2},"302ai/grok-4.1":{input:2,output:10},"302ai/claude-sonnet-4-6":{input:3,output:15},"302ai/gpt-5.3-chat-latest":{input:1.75,output:14},"302ai/qwen3.6-plus":{input:.3,output:1.8},"302ai/gpt-5.6-terra":{input:2,output:12},"302ai/deepseek-v3.2":{input:.29,output:.43},"302ai/claude-opus-4-7-thinking":{input:5,output:25},"302ai/o3":{input:2,output:8},"302ai/glm-5.3":{input:1.4,output:4.4},"302ai/claude-opus-4-7":{input:5,output:25,cache_read:.5,cache_write:6.25,tiers:[{input:10,output:37.5,cache_read:1,cache_write:12.5,tier:{type:"context",size:2e5}}],context_over_200k:{input:10,output:37.5,cache_read:1,cache_write:12.5}},"302ai/kimi-k2.7-code":{input:.95,output:4},"302ai/gpt-5":{input:1.25,output:10},"302ai/grok-4.6":{input:2,output:6},"302ai/gemini-3.1-flash-lite-preview":{input:.25,output:1.5},"302ai/qwen3-max-2025-09-23":{input:.86,output:3.43},"302ai/qwen3.7-plus":{input:.285,output:1.15},"302ai/gpt-5.6-sol":{input:5,output:30},"302ai/gemini-3.1-flash-lite":{input:.25,output:1.5},"openrouter/sao10k/l3-lunaris-8b":{input:.04,output:.05},"openrouter/sao10k/l3.3-euryale-70b":{input:.65,output:.75},"openrouter/sao10k/l3.1-euryale-70b":{input:.85,output:.85},"openrouter/kwaipilot/kat-coder-pro-v2.5":{input:.74,output:2.96,cache_read:.15},"openrouter/bytedance-seed/seed-1.6-flash":{input:.075,output:.3,tiers:[{input:.1,output:.8,tier:{type:"context",size:128e3}}]},"openrouter/bytedance-seed/seed-2.0-lite":{input:.25,output:2,tiers:[{input:.5,output:4,tier:{type:"context",size:128e3}}]},"openrouter/bytedance-seed/seed-2-1-turbo":{input:.5,output:2.5},"openrouter/bytedance-seed/seed-2.0-mini":{input:.1,output:.4,tiers:[{input:.2,output:.8,tier:{type:"context",size:128e3}}]},"openrouter/bytedance-seed/seed-2.0-code":{input:.5,output:3,tiers:[{input:1,output:6,tier:{type:"context",size:128e3}}]},"openrouter/bytedance-seed/seed-1.6":{input:.25,output:2,tiers:[{input:.5,output:4,tier:{type:"context",size:128e3}}]},"openrouter/~moonshotai/kimi-latest":{input:1.0301,output:9.043,cache_read:.3},"openrouter/poolside/laguna-s-2.1":{input:.09,output:.18,cache_read:.009},"openrouter/poolside/laguna-xs-2.1":{input:.06,output:.12,cache_read:.03},"openrouter/prism-ml/ternary-bonsai-2-27b":{input:.075,output:.5},"openrouter/anthropic/claude-opus-4.1":{input:15,output:75,cache_read:1.5,cache_write:18.75},"openrouter/anthropic/claude-opus-4.5":{input:5,output:25,cache_read:.5,cache_write:6.25},"openrouter/anthropic/claude-opus-4.6":{input:5,output:25,cache_read:.5,cache_write:6.25,tiers:[{input:10,output:37.5,cache_read:1,cache_write:12.5,tier:{type:"context",size:2e5}}],context_over_200k:{input:10,output:37.5,cache_read:1,cache_write:12.5}},"openrouter/anthropic/claude-opus-4.7":{input:5,output:25,cache_read:.5,cache_write:6.25,tiers:[{input:10,output:37.5,cache_read:1,cache_write:12.5,tier:{type:"context",size:2e5}}],context_over_200k:{input:10,output:37.5,cache_read:1,cache_write:12.5}},"openrouter/anthropic/claude-opus-4.8":{input:5,output:25,cache_read:.5,cache_write:6.25},"openrouter/anthropic/claude-haiku-4.5":{input:1,output:5,cache_read:.1,cache_write:1.25},"openrouter/anthropic/claude-opus-5":{input:5,output:25,cache_read:.5,cache_write:6.25},"openrouter/anthropic/claude-fable-5.1":{input:10,output:50,cache_read:.25,cache_write:12.5},"openrouter/anthropic/claude-sonnet-4.5":{input:3,output:15,cache_read:.3,cache_write:3.75,tiers:[{input:6,output:22.5,cache_read:.6,cache_write:7.5,tier:{type:"context",size:2e5}}],context_over_200k:{input:6,output:22.5,cache_read:.6,cache_write:7.5}},"openrouter/anthropic/claude-fable-5":{input:10,output:50,cache_read:1,cache_write:12.5},"openrouter/anthropic/claude-sonnet-4":{input:3,output:15,cache_read:.3,cache_write:3.75,tiers:[{input:6,output:22.5,cache_read:.6,cache_write:7.5,tier:{type:"context",size:2e5}}],context_over_200k:{input:6,output:22.5,cache_read:.6,cache_write:7.5}},"openrouter/anthropic/claude-sonnet-5":{input:2,output:10,cache_read:.2,cache_write:2.5},"openrouter/anthropic/claude-sonnet-4.6":{input:3,output:15,cache_read:.3,cache_write:3.75,tiers:[{input:6,output:22.5,cache_read:.6,cache_write:7.5,tier:{type:"context",size:2e5}}],context_over_200k:{input:6,output:22.5,cache_read:.6,cache_write:7.5}},"openrouter/anthropic/claude-opus-5.5":{input:4,output:20,cache_read:.2,cache_write:5},"openrouter/cohere/command-r-08-2024":{input:.15,output:.6},"openrouter/cohere/command-a-plus":{input:.3,output:1.5,cache_read:.15},"openrouter/cohere/command-a":{input:2.5,output:10},"openrouter/cohere/command-r7b-12-2024":{input:.0375,output:.15},"openrouter/cohere/command-r-plus-08-2024":{input:2.5,output:10},"openrouter/deepseek/deepseek-chat-v3.1":{input:.25,output:.95,cache_read:.13},"openrouter/deepseek/deepseek-v4-flash-0731":{input:.021,output:.32,cache_read:.016},"openrouter/deepseek/deepseek-v4.1-flash":{input:.3,output:1.2,cache_read:.006},"openrouter/deepseek/deepseek-v4-flash-vision-exp":{input:.22,output:.66,cache_read:.007},"openrouter/deepseek/deepseek-r1-distill-llama-70b":{input:.8,output:.8},"openrouter/deepseek/deepseek-v3.1-terminus":{input:.27,output:1,cache_read:.135},"openrouter/deepseek/deepseek-chat":{input:.32,output:.89},"openrouter/deepseek/deepseek-v4-pro-0813":{input:.264,output:.792,cache_read:.0088},"openrouter/deepseek/deepseek-v3.2-exp":{input:.27,output:.41},"openrouter/deepseek/deepseek-chat-v3-0324":{input:.25,output:1},"openrouter/deepseek/deepseek-r1":{input:.7,output:2.5},"openrouter/deepseek/deepseek-v4-pro":{input:.348,output:.696,cache_read:.029},"openrouter/deepseek/deepseek-r1-0528":{input:.5,output:2.15,cache_read:.35},"openrouter/deepseek/deepseek-v3.2":{input:.269,output:.4,cache_read:.1345},"openrouter/deepseek/deepseek-v4-flash":{input:.04704,output:.09408,cache_read:.009408},"openrouter/unbiased/pareto":{input:2.5,output:7.5,cache_read:.25},"openrouter/tencent/hy3-preview":{input:.18,output:.6,cache_read:.06},"openrouter/tencent/hunyuan-a13b-instruct":{input:.14,output:.57},"openrouter/tencent/hy-mt2-30b-a3b":{input:.074,output:.295},"openrouter/tencent/hy-mt2-1.8b":{input:.044,output:.177},"openrouter/tencent/hy3":{input:.132,output:.528,cache_read:.033},"openrouter/tencent/hy-mt2-7b":{input:.074,output:.295},"openrouter/tencent/hy4-preview":{input:.834,output:2.501,cache_read:.042},"openrouter/anthracite-org/magnum-v4-72b":{input:2.5,output:5},"openrouter/meta-llama/llama-4-scout":{input:.1,output:.3},"openrouter/meta-llama/llama-guard-4-12b":{input:.18,output:.18},"openrouter/meta-llama/llama-4-maverick":{input:.1875,output:.6525},"openrouter/meta-llama/llama-3.3-70b-instruct":{input:.1,output:.32},"openrouter/meta-llama/llama-3.1-8b-instruct":{input:.05,output:.08,cache_read:.025},"openrouter/meta-llama/llama-3.2-1b-instruct":{input:.027,output:.201},"openrouter/meta-llama/llama-3.2-3b-instruct":{input:.05,output:.33},"openrouter/meta-llama/llama-3.1-70b-instruct":{input:.4,output:.4},"openrouter/~google/gemini-flash-latest":{input:.75,output:3.75,reasoning:3.75,cache_read:.075,cache_write:.041667},"openrouter/~google/gemini-pro-latest":{input:2,output:12,reasoning:12,cache_read:.2,cache_write:.375,tiers:[{input:4,output:18,cache_read:.4,tier:{type:"context",size:2e5}}],context_over_200k:{input:4,output:18,cache_read:.4}},"openrouter/perceptron/perceptron-mk1":{input:.15,output:1.5},"openrouter/perceptron/perceptron-mk1.5":{input:.15,output:1.5},"openrouter/z-ai/glm-4.6v":{input:.3,output:.9,cache_read:.055},"openrouter/z-ai/glm-4.5":{input:.6,output:2.2,cache_read:.11},"openrouter/z-ai/glm-5.3-prime":{input:2.8,output:8.8,cache_read:.56},"openrouter/z-ai/glm-5v-turbo":{input:1.2,output:4,cache_read:.24},"openrouter/z-ai/glm-5.3-flash":{input:.04,output:.5,cache_read:.015},"openrouter/z-ai/glm-4.6":{input:.43,output:1.75,cache_read:.08},"openrouter/z-ai/glm-5":{input:.6,output:1.92,cache_read:.12},"openrouter/z-ai/glm-4.5v":{input:.6,output:1.8,cache_read:.11},"openrouter/z-ai/glm-5.3-flashx":{input:.37,output:1.25,cache_read:.09},"openrouter/z-ai/glm-4.7-flash":{input:.0605,output:.4},"openrouter/z-ai/glm-4.7":{input:.6,output:2.2,cache_read:.11},"openrouter/z-ai/glm-5.2":{input:.6496,output:2.0416,cache_read:.12064},"openrouter/z-ai/glm-5.1":{input:.9646,output:3.0316,cache_read:.17914},"openrouter/z-ai/glm-5-turbo":{input:1.2,output:4,cache_read:.24},"openrouter/z-ai/glm-4.5-air":{input:.13,output:.85,cache_read:.025},"openrouter/z-ai/glm-5.3":{input:.3794,output:1.1924,cache_read:.07046},"openrouter/inference-net/schematron-v2-small":{input:.05,output:.23,cache_read:.05},"openrouter/inference-net/schematron-v2-turbo":{input:.03,output:.15,cache_read:.03},"openrouter/thinkingmachines/inkling-small":{input:.45,output:1.2,cache_read:.1},"openrouter/thinkingmachines/inkling":{input:1,output:4.05,cache_read:.17},"openrouter/meituan/longcat-2.0":{input:.3,output:1.2,cache_read:.006},"openrouter/perplexity/sonar-pro":{input:3,output:15},"openrouter/perplexity/sonar-deep-research":{input:2,output:8,reasoning:3},"openrouter/perplexity/sonar":{input:1,output:1},"openrouter/perplexity/sonar-reasoning-pro":{input:2,output:8},"openrouter/perplexity/sonar-pro-search":{input:3,output:15},"openrouter/meta/muse-spark-1.3":{input:1.25,output:4.25,cache_read:.15},"openrouter/meta/muse-glimmer-30b":{input:.3,output:1.2,cache_read:.04},"openrouter/meta/muse-spark-1.1":{input:1.25,output:4.25,cache_read:.15},"openrouter/meta/muse-spark-1.2":{input:1.25,output:4.25,cache_read:.15},"openrouter/meta/muse-spark-1.2-contributor":{input:.1,output:.2,cache_read:.002},"openrouter/meta/muse-spark-1.3-contributor":{input:.1,output:.2,cache_read:.002},"openrouter/nousresearch/hermes-3-llama-3.1-70b":{input:.7,output:.7},"openrouter/nousresearch/hermes-3-llama-3.1-405b":{input:1,output:1},"openrouter/nousresearch/hermes-4-405b":{input:1,output:3},"openrouter/~z-ai/glm-flash-latest":{input:.04,output:.5,cache_read:.015},"openrouter/~z-ai/glm-latest":{input:.3794,output:1.1924,cache_read:.07046},"openrouter/arcee-ai/trinity-large-thinking":{input:.25,output:.8,cache_read:.06},"openrouter/~openai/gpt-terra-latest":{input:2,output:12,cache_read:.2,cache_write:2.5,tiers:[{input:4,output:18,cache_read:.4,cache_write:5,tier:{type:"context",size:272e3}}],context_over_200k:{input:4,output:18,cache_read:.4,cache_write:5}},"openrouter/~openai/gpt-luna-latest":{input:.1,output:.5,cache_read:.01,cache_write:.125,tiers:[{input:.2,output:.75,cache_read:.02,cache_write:.25,tier:{type:"context",size:272e3}}],context_over_200k:{input:.2,output:.75,cache_read:.02,cache_write:.25}},"openrouter/~openai/gpt-sol-latest":{input:2,output:10,cache_read:.2,cache_write:2.5,tiers:[{input:4,output:15,cache_read:.4,cache_write:5,tier:{type:"context",size:272e3}}],context_over_200k:{input:4,output:15,cache_read:.4,cache_write:5}},"openrouter/~openai/gpt-astra-latest":{input:10,output:50,cache_read:1,cache_write:12.5,tiers:[{input:20,output:75,cache_read:2,cache_write:25,tier:{type:"context",size:272e3}}],context_over_200k:{input:20,output:75,cache_read:2,cache_write:25}},"openrouter/~openai/gpt-mini-latest":{input:.75,output:4.5,cache_read:.075},"openrouter/cognitivecomputations/dolphin-mistral-24b-venice-edition":{input:.2,output:.9},"openrouter/thedrummer/skyfall-36b-v2":{input:.55,output:.8,cache_read:.25},"openrouter/thedrummer/unslopnemo-12b":{input:.4,output:.4},"openrouter/thedrummer/cydonia-24b-v4.1":{input:.3,output:.5,cache_read:.15},"openrouter/baidu/ernie-4.5-vl-424b-a47b":{input:.42,output:1.25},"openrouter/x-ai/grok-4.20-multi-agent":{input:1.25,output:2.5,cache_read:.2,tiers:[{input:2.5,output:5,cache_read:.4,tier:{type:"context",size:2e5}}],context_over_200k:{input:2.5,output:5,cache_read:.4}},"openrouter/x-ai/grok-4.7":{input:1.6,output:4.8,cache_read:.4,tiers:[{input:3.2,output:9.6,cache_read:.8,tier:{type:"context",size:2e5}}],context_over_200k:{input:3.2,output:9.6,cache_read:.8}},"openrouter/x-ai/grok-4.3":{input:1.25,output:2.5,cache_read:.2,tiers:[{input:2.5,output:5,cache_read:.4,tier:{type:"context",size:2e5}}],context_over_200k:{input:2.5,output:5,cache_read:.4}},"openrouter/x-ai/grok-4.5":{input:2,output:6,cache_read:.3,tiers:[{input:4,output:12,cache_read:.6,tier:{type:"context",size:2e5}}],context_over_200k:{input:4,output:12,cache_read:.6}},"openrouter/x-ai/grok-build-0.1":{input:1,output:2,cache_read:.2,tiers:[{input:2,output:4,cache_read:.4,tier:{type:"context",size:2e5}}],context_over_200k:{input:2,output:4,cache_read:.4}},"openrouter/x-ai/grok-4.20":{input:1.25,output:2.5,cache_read:.2,tiers:[{input:2.5,output:5,cache_read:.4,tier:{type:"context",size:2e5}}],context_over_200k:{input:2.5,output:5,cache_read:.4}},"openrouter/x-ai/grok-4.6":{input:2,output:6,cache_read:.5,tiers:[{input:4,output:12,cache_read:1,tier:{type:"context",size:2e5}}],context_over_200k:{input:4,output:12,cache_read:1}},"openrouter/~anthropic/claude-opus-latest":{input:4,output:20,cache_read:.2,cache_write:5},"openrouter/~anthropic/claude-haiku-latest":{input:1,output:5,cache_read:.1,cache_write:1.25},"openrouter/~anthropic/claude-sonnet-latest":{input:2,output:10,cache_read:.2,cache_write:2.5},"openrouter/~anthropic/claude-fable-latest":{input:10,output:50,cache_read:.25,cache_write:12.5},"openrouter/upstage/solar-pro-3":{input:.15,output:.6,cache_read:.015},"openrouter/upstage/solar-pro4":{input:.09,output:.36,cache_read:.018},"openrouter/upstage/solar-mini4":{input:.05,output:.2,cache_read:.005},"openrouter/~deepseek/deepseek-flash-latest":{input:.035,output:.29,cache_read:.001},"openrouter/~deepseek/deepseek-pro-latest":{input:.24948,output:.74844,cache_read:.007938},"openrouter/~deepseek/deepseek-v4-flash-latest":{input:.021,output:.32,cache_read:.016},"openrouter/~x-ai/grok-latest":{input:1.6,output:4.8,cache_read:.4,tiers:[{input:3.2,output:9.6,cache_read:.8,tier:{type:"context",size:2e5}}],context_over_200k:{input:3.2,output:9.6,cache_read:.8}},"openrouter/bytedance/ui-tars-1.5-7b":{input:.1,output:.2,cache_read:.1},"openrouter/google/gemma-4-31b-it":{input:.09,output:.34,cache_read:.05},"openrouter/google/gemini-3.1-flash-image-preview":{input:.5,output:3},"openrouter/google/gemma-3-27b-it":{input:.08,output:.45,cache_read:.04},"openrouter/google/gemini-2.5-flash-image":{input:.3,output:2.5,cache_read:.03,cache_write:.083333},"openrouter/google/gemma-2-27b-it":{input:.65,output:.65},"openrouter/google/gemini-3.6-flash":{input:.75,output:3.75,reasoning:3.75,cache_read:.075,cache_write:.041667},"openrouter/google/gemma-4-26b-a4b-it":{input:.0675,output:.225,cache_read:.0375},"openrouter/google/gemini-3-pro-image-preview":{input:2,output:12,reasoning:12,cache_read:.2,cache_write:.375},"openrouter/google/gemini-3.5-flash-lite":{input:.3,output:2.5,reasoning:2.5,cache_read:.03,cache_write:.083333},"openrouter/google/gemini-3.1-flash-image":{input:.5,output:3},"openrouter/google/gemini-3.1-pro-preview":{input:2,output:12,reasoning:12,cache_read:.2,cache_write:.375,tiers:[{input:4,output:18,cache_read:.4,tier:{type:"context",size:2e5}}],context_over_200k:{input:4,output:18,cache_read:.4}},"openrouter/google/gemma-3-12b-it":{input:.05,output:.15},"openrouter/google/gemini-3.5-flash":{input:1.5,output:9,reasoning:9,cache_read:.15,cache_write:.083333},"openrouter/google/gemini-2.5-pro":{input:1.25,output:10,reasoning:10,cache_read:.125,cache_write:.375,tiers:[{input:2.5,output:15,cache_read:.25,tier:{type:"context",size:2e5}}],context_over_200k:{input:2.5,output:15,cache_read:.25}},"openrouter/google/gemini-3-pro-image":{input:2,output:12,reasoning:12,cache_read:.2,cache_write:.375},"openrouter/google/gemini-2.5-flash":{input:.3,output:2.5,reasoning:2.5,cache_read:.03,cache_write:.083333},"openrouter/google/gemini-3.1-flash-lite-image":{input:.25,output:1.5},"openrouter/google/gemini-3.7-flash":{input:.75,output:3.75,reasoning:3.75,cache_read:.075,cache_write:.041667},"openrouter/google/gemini-3.1-pro-preview-customtools":{input:2,output:12,reasoning:12,cache_read:.2,cache_write:.375,tiers:[{input:4,output:18,cache_read:.4,tier:{type:"context",size:2e5}}],context_over_200k:{input:4,output:18,cache_read:.4}},"openrouter/google/gemini-3-flash-preview":{input:.5,output:3,reasoning:3,cache_read:.05,cache_write:.083333},"openrouter/google/gemini-3.8-flash":{input:.75,output:3.75,reasoning:3.75,cache_read:.075,cache_write:.041667},"openrouter/google/gemma-3-4b-it":{input:.05,output:.1},"openrouter/google/gemini-2.5-flash-lite":{input:.1,output:.4,reasoning:.4,cache_read:.01,cache_write:.083333},"openrouter/google/gemini-2.5-pro-preview":{input:1.25,output:10,reasoning:10,cache_read:.125,cache_write:.375,tiers:[{input:2.5,output:15,cache_read:.25,tier:{type:"context",size:2e5}}],context_over_200k:{input:2.5,output:15,cache_read:.25}},"openrouter/google/gemini-3.1-flash-lite-preview":{input:.25,output:1.5,reasoning:1.5,cache_read:.025,cache_write:.083333},"openrouter/google/gemini-3.1-flash-lite":{input:.25,output:1.5,reasoning:1.5,cache_read:.025,cache_write:.083333},"openrouter/writer/palmyra-x5":{input:.6,output:6},"openrouter/ibm-granite/granite-4.0-h-micro":{input:.017,output:.112},"openrouter/ibm-granite/granite-4.2-8b":{input:.06,output:.25,cache_read:.015},"openrouter/fireworks/ember-1":{input:3,output:15,cache_read:.3},"openrouter/mistralai/mistral-nemo":{input:.019,output:.03},"openrouter/mistralai/ministral-8b-2512":{input:.15,output:.15,cache_read:.015},"openrouter/mistralai/mistral-small-24b-instruct-2501":{input:.05,output:.08},"openrouter/mistralai/devstral-2512":{input:.4,output:2,cache_read:.04},"openrouter/mistralai/mistral-saba":{input:.2,output:.6,cache_read:.02},"openrouter/mistralai/mistral-medium-3-5":{input:1.5,output:7.5},"openrouter/mistralai/mistral-medium-3.1":{input:.4,output:2,cache_read:.04},"openrouter/mistralai/mistral-small-3.2-24b-instruct":{input:.09375,output:.25},"openrouter/mistralai/mistral-large":{input:2,output:6,cache_read:.2},"openrouter/mistralai/mistral-small-2603":{input:.15,output:.6,cache_read:.015},"openrouter/mistralai/mistral-medium-3":{input:.4,output:2,cache_read:.04},"openrouter/mistralai/voxtral-small-24b-2507":{input:.1,output:.3,cache_read:.01},"openrouter/mistralai/mistral-large-2512":{input:.5,output:1.5,cache_read:.05},"openrouter/mistralai/mistral-large-2407":{input:2,output:6,cache_read:.2},"openrouter/mistralai/ministral-14b-2512":{input:.2,output:.2,cache_read:.02},"openrouter/mistralai/mistral-small-3.1-24b-instruct":{input:.351,output:.555},"openrouter/mistralai/ministral-3b-2512":{input:.1,output:.1,cache_read:.01},"openrouter/mistralai/mixtral-8x22b-instruct":{input:2,output:6,cache_read:.2},"openrouter/mistralai/codestral-2508":{input:.3,output:.9,cache_read:.03},"openrouter/sakana/fugu-max":{input:2,output:6,cache_read:.25},"openrouter/sakana/fugu-ultra-v2":{input:5,output:30,cache_read:.5,tiers:[{input:10,output:45,cache_read:1,tier:{type:"context",size:272e3}}],context_over_200k:{input:10,output:45,cache_read:1}},"openrouter/sakana/fugu-ultra":{input:5,output:30,cache_read:.5,tiers:[{input:10,output:45,cache_read:1,tier:{type:"context",size:272e3}}],context_over_200k:{input:10,output:45,cache_read:1}},"openrouter/sakana/sakana-namazu":{input:.95,output:4,cache_read:.15},"openrouter/inclusionai/ling-3.0-flash":{input:.021,output:.063,cache_read:.0042},"openrouter/inclusionai/ling-3.0-flash-vl":{input:.021,output:.0616,cache_read:.0042},"openrouter/inclusionai/ling-3.0-flash-fin":{input:.06,output:.18,cache_read:.012},"openrouter/moonshotai/kimi-k3":{input:3,output:15,cache_read:.3},"openrouter/moonshotai/kimi-k2.6":{input:.95,output:4,cache_read:.16},"openrouter/moonshotai/kimi-k2-thinking":{input:.6,output:2.5,cache_read:.15},"openrouter/moonshotai/kimi-k2.5":{input:.45,output:2.25,cache_read:.07},"openrouter/moonshotai/kimi-k2-0905":{input:.6,output:2.5},"openrouter/moonshotai/kimi-k2":{input:.57,output:2.3},"openrouter/moonshotai/kimi-k2.7-code":{input:.6562,output:3.3,cache_read:.18},"openrouter/rekaai/reka-flash-3":{input:.1,output:.2},"openrouter/rekaai/reka-edge":{input:.1,output:.1},"openrouter/nvidia/nemotron-3-nano-30b-a3b":{input:.05,output:.2,cache_read:.03},"openrouter/nvidia/nemotron-3.5-lightning":{input:.08,output:.2,cache_read:.04},"openrouter/nvidia/nemotron-3-super-120b-a12b":{input:.08,output:.45},"openrouter/nvidia/nemotron-3-ultra-550b-a55b":{input:.6,output:2.4,cache_read:.12},"openrouter/nvidia/nemotron-3.5-content-safety":{input:.2,output:.2},"openrouter/xiaomi/mimo-v2.6-pro":{input:.435,output:.87,cache_read:.0036},"openrouter/xiaomi/mimo-v2.5":{input:.14,output:.28,cache_read:.0028},"openrouter/xiaomi/mimo-v2.6-pro-ultraspeed":{input:4.35,output:8.7,cache_read:.036},"openrouter/xiaomi/mimo-v2.5-pro":{input:.435,output:.87,cache_read:.0036},"openrouter/xiaomi/mimo-v2.6-flash":{input:.14,output:.28,cache_read:.0028},"openrouter/undi95/remm-slerp-l2-13b":{input:.35,output:.65},"openrouter/gryphe/mythomax-l2-13b":{input:.08,output:.11},"openrouter/minimax/minimax-m2.5":{input:.27,output:1.08,cache_read:.027},"openrouter/minimax/minimax-01":{input:.2,output:1.1},"openrouter/minimax/minimax-m2-her":{input:.3,output:1.2,cache_read:.03},"openrouter/minimax/minimax-m2.7":{input:.3,output:1.2,cache_read:.06},"openrouter/minimax/minimax-m1":{input:.4,output:2.2},"openrouter/minimax/minimax-m3":{input:.3,output:1.2,cache_read:.06},"openrouter/minimax/minimax-m2.1":{input:.3,output:1.2,cache_read:.03},"openrouter/minimax/minimax-m2":{input:.3,output:1.2},"openrouter/mancer/weaver":{input:.4,output:.75},"openrouter/stepfun/step-3.5-flash":{input:.1,output:.3},"openrouter/stepfun/step-3.7-flash":{input:.2,output:1.15,cache_read:.04},"openrouter/inception/mercury-2.5":{input:.04,output:.15,cache_read:.004},"openrouter/inception/mercury-2":{input:.25,output:.75,cache_read:.025},"openrouter/amazon/nova-lite-v1":{input:.06,output:.24},"openrouter/amazon/nova-2-lite-v1":{input:.3,output:2.5},"openrouter/amazon/nova-pro-v1":{input:.8,output:3.2},"openrouter/amazon/nova-premier-v1":{input:2.5,output:12.5,cache_read:.625},"openrouter/amazon/nova-micro-v1":{input:.035,output:.14},"openrouter/relace/relace-search":{input:1,output:3},"openrouter/relace/relace-apply-3":{input:.85,output:1.25},"openrouter/aion-labs/aion-2.0":{input:.8,output:1.6,cache_read:.2},"openrouter/aion-labs/aion-rp-llama-3.1-8b":{input:.8,output:1.6},"openrouter/aion-labs/aion-3.0":{input:3,output:6,cache_read:.75},"openrouter/aion-labs/aion-3.5":{input:3,output:6,cache_read:.75},"openrouter/aion-labs/aion-3.5-mini":{input:.7,output:1.4,cache_read:.18},"openrouter/aion-labs/aion-3.0-mini":{input:.7,output:1.4,cache_read:.18},"openrouter/qwen/qwen3-235b-a22b-2507":{input:.0875,output:.35,cache_read:.0175},"openrouter/qwen/qwen3-vl-235b-a22b-instruct":{input:.21,output:1.9,cache_read:.1},"openrouter/qwen/qwen3.7-max":{input:1.475,output:4.425,cache_read:.295,cache_write:1.84375},"openrouter/qwen/qwen3.8-27b":{input:.42,output:3,cache_read:.085},"openrouter/qwen/qwen3-vl-235b-a22b-thinking":{input:.4,output:4},"openrouter/qwen/qwen3.8-2.4t-a95b":{input:2,output:6,cache_read:.25},"openrouter/qwen/qwen3.5-27b":{input:.195,output:1.56},"openrouter/qwen/qwen3-next-80b-a3b-thinking":{input:.15,output:1.2},"openrouter/qwen/qwen3-coder-next":{input:.12,output:.8,cache_read:.07},"openrouter/qwen/qwen3-coder":{input:.3,output:1,cache_read:.1},"openrouter/qwen/qwen3-32b":{input:.08,output:.28},"openrouter/qwen/qwen-plus":{input:.26,output:.78,cache_read:.052,cache_write:.325,tiers:[{input:.78,output:2.34,cache_read:.156,cache_write:.975,tier:{type:"context",size:256e3}}],context_over_200k:{input:.78,output:2.34,cache_read:.156,cache_write:.975}},"openrouter/qwen/qwen3.7-flash":{input:.03,output:.13,cache_read:.006,cache_write:.038,tiers:[{input:.1,output:.4,cache_read:.02,cache_write:.125,tier:{type:"context",size:32e3}},{input:.2,output:.8,cache_read:.04,cache_write:.25,tier:{type:"context",size:256e3}}]},"openrouter/qwen/qwen3-max":{input:.78,output:3.9,cache_read:.156,cache_write:.975,tiers:[{input:1.56,output:7.8,cache_read:.312,cache_write:1.95,tier:{type:"context",size:32e3}},{input:1.95,output:9.75,cache_read:.39,cache_write:2.4375,tier:{type:"context",size:128e3}}]},"openrouter/qwen/qwen3-coder-30b-a3b-instruct":{input:.07,output:.28},"openrouter/qwen/qwen3.8-omni-flash":{input:.15,output:.47,cache_read:.016},"openrouter/qwen/qwen3-vl-30b-a3b-instruct":{input:.15,output:.6},"openrouter/qwen/qwen3-235b-a22b-thinking-2507":{input:.23,output:2.3},"openrouter/qwen/qwen3-235b-a22b":{input:.455,output:1.82},"openrouter/qwen/qwen3.5-122b-a10b":{input:.26,output:2.08},"openrouter/qwen/qwen-plus-2025-07-28":{input:.26,output:.78,tiers:[{input:.78,output:2.34,tier:{type:"context",size:256e3}}],context_over_200k:{input:.78,output:2.34}},"openrouter/qwen/qwen3.6-35b-a3b":{input:.15,output:1,cache_read:.05},"openrouter/qwen/qwen3-next-80b-a3b-instruct":{input:.1,output:1.1,cache_read:.07},"openrouter/qwen/qwen3-vl-30b-a3b-thinking":{input:.2,output:2.4},"openrouter/qwen/qwen3.6-flash":{input:.1875,output:1.125,cache_write:.234375,tiers:[{input:.75,output:3,cache_write:.9375,tier:{type:"context",size:256e3}}],context_over_200k:{input:.75,output:3,cache_write:.9375}},"openrouter/qwen/qwen3-coder-flash":{input:.195,output:.975,cache_read:.039,cache_write:.24375,tiers:[{input:.325,output:1.625,cache_read:.065,cache_write:.40625,tier:{type:"context",size:32e3}},{input:.52,output:2.6,cache_read:.104,cache_write:.65,tier:{type:"context",size:128e3}}]},"openrouter/qwen/qwen-2.5-coder-32b-instruct":{input:.66,output:1},"openrouter/qwen/qwen3.5-flash-02-23":{input:.065,output:.26},"openrouter/qwen/qwen3-max-thinking":{input:.78,output:3.9,tiers:[{input:1.56,output:7.8,tier:{type:"context",size:32e3}},{input:1.95,output:9.75,tier:{type:"context",size:128e3}}]},"openrouter/qwen/qwen3-coder-plus":{input:.65,output:3.25,cache_read:.13,cache_write:.8125,tiers:[{input:1.17,output:5.85,cache_read:.234,cache_write:1.4625,tier:{type:"context",size:32e3}},{input:1.95,output:9.75,cache_read:.39,cache_write:2.4375,tier:{type:"context",size:128e3}}]},"openrouter/qwen/qwen3.5-9b":{input:.1,output:.15},"openrouter/qwen/qwen3.8-max-prime":{input:4,output:12,cache_read:.5},"openrouter/qwen/qwen3.5-plus-20260420":{input:.3,output:1.8,cache_write:.375,tiers:[{input:.375,output:2.25,cache_write:.46875,tier:{type:"context",size:256e3}}],context_over_200k:{input:.375,output:2.25,cache_write:.46875}},"openrouter/qwen/qwen3.8-flash":{input:.15,output:.47,cache_read:.016,cache_write:.2},"openrouter/qwen/qwen3.5-35b-a3b":{input:.3125,output:1.25,cache_read:.15625},"openrouter/qwen/qwen3.6-max-preview":{input:1.027,output:6.162,cache_write:1.28375,tiers:[{input:1.58,output:9.48,cache_write:1.975,tier:{type:"context",size:128e3}}]},"openrouter/qwen/qwen3-30b-a3b":{input:.12,output:.5},"openrouter/qwen/qwen3.5-397b-a17b":{input:.55,output:3.5,cache_read:.225},"openrouter/qwen/qwen3-8b":{input:.117,output:.455},"openrouter/qwen/qwen3-vl-32b-instruct":{input:.104,output:.416},"openrouter/qwen/qwen3-vl-8b-instruct":{input:.117,output:.455},"openrouter/qwen/qwen3-30b-a3b-instruct-2507":{input:.1,output:.3},"openrouter/qwen/qwen2.5-vl-72b-instruct":{input:.8,output:1,cache_read:.4},"openrouter/qwen/qwen-2.5-7b-instruct":{input:.1,output:.2},"openrouter/qwen/qwen3.5-plus-02-15":{input:.26,output:1.56,tiers:[{input:.325,output:1.95,tier:{type:"context",size:256e3}}],context_over_200k:{input:.325,output:1.95}},"openrouter/qwen/qwen-2.5-72b-instruct":{input:.36,output:.4},"openrouter/qwen/qwen3-30b-a3b-thinking-2507":{input:.2,output:2.4},"openrouter/qwen/qwen3.6-27b":{input:.32,output:3.2},"openrouter/qwen/qwen3.6-plus":{input:.325,output:1.95,cache_write:.40625,tiers:[{input:1.3,output:3.9,cache_write:1.625,tier:{type:"context",size:256e3}}],context_over_200k:{input:1.3,output:3.9,cache_write:1.625}},"openrouter/qwen/qwen3-14b":{input:.12,output:.24},"openrouter/qwen/qwen3-vl-8b-thinking":{input:.18,output:2.1},"openrouter/qwen/qwen3.7-plus":{input:.32,output:1.28,cache_read:.064,cache_write:.4,tiers:[{input:.96,output:3.84,cache_read:.192,cache_write:1.2,tier:{type:"context",size:256e3}}],context_over_200k:{input:.96,output:3.84,cache_read:.192,cache_write:1.2}},"openrouter/qwen/qwen3.8-max-0902":{input:2,output:6,cache_read:.25,cache_write:2.5},"openrouter/morph/morph-v3-large":{input:.9,output:1.9},"openrouter/morph/morph-v3-fast":{input:.8,output:1.2},"openrouter/openai/gpt-5.4":{input:2.5,output:15,cache_read:.25,tiers:[{input:5,output:22.5,cache_read:.5,tier:{type:"context",size:272e3}}],context_over_200k:{input:5,output:22.5,cache_read:.5}},"openrouter/openai/gpt-5.4-image-2":{input:8,output:15,cache_read:2},"openrouter/openai/gpt-5.4-pro":{input:30,output:180,tiers:[{input:60,output:270,tier:{type:"context",size:272e3}}],context_over_200k:{input:60,output:270}},"openrouter/openai/gpt-audio":{input:2.5,output:10},"openrouter/openai/gpt-3.5-turbo":{input:.5,output:1.5},"openrouter/openai/gpt-6-astra-pro":{input:10,output:50,cache_read:1,cache_write:12.5,tiers:[{input:20,output:75,cache_read:2,cache_write:25,tier:{type:"context",size:272e3}}],context_over_200k:{input:20,output:75,cache_read:2,cache_write:25}},"openrouter/openai/gpt-5.5-pro":{input:30,output:180,tiers:[{input:60,output:270,tier:{type:"context",size:272e3}}],context_over_200k:{input:60,output:270}},"openrouter/openai/gpt-5.4-nano":{input:.2,output:1.25,cache_read:.02},"openrouter/openai/gpt-4o-2024-05-13":{input:5,output:15},"openrouter/openai/gpt-4o-mini-2024-07-18":{input:.15,output:.6,cache_read:.075},"openrouter/openai/gpt-5.2-codex":{input:1.75,output:14,cache_read:.175},"openrouter/openai/gpt-5.1-codex":{input:1.25,output:10,cache_read:.13},"openrouter/openai/gpt-4o":{input:2.5,output:10,cache_read:1.25},"openrouter/openai/gpt-chat-latest":{input:5,output:30,cache_read:.5},"openrouter/openai/gpt-audio-mini":{input:.6,output:2.4},"openrouter/openai/gpt-5.6-sol-pro":{input:2,output:10,cache_read:.2,cache_write:2.5,tiers:[{input:4,output:15,cache_read:.4,cache_write:5,tier:{type:"context",size:272e3}}],context_over_200k:{input:4,output:15,cache_read:.4,cache_write:5}},"openrouter/openai/gpt-5-mini":{input:.25,output:2,cache_read:.025},"openrouter/openai/gpt-5.2-pro":{input:21,output:168},"openrouter/openai/o4-mini":{input:1.1,output:4.4,cache_read:.275},"openrouter/openai/o3-mini":{input:1.1,output:4.4,cache_read:.55},"openrouter/openai/gpt-4":{input:30,output:60},"openrouter/openai/gpt-5.3-codex":{input:1.75,output:14,cache_read:.175},"openrouter/openai/gpt-4.1-nano":{input:.1,output:.4,cache_read:.025},"openrouter/openai/gpt-5-nano":{input:.05,output:.4,cache_read:.005},"openrouter/openai/o1":{input:15,output:60,cache_read:7.5},"openrouter/openai/gpt-5-pro":{input:15,output:120},"openrouter/openai/gpt-3.5-turbo-instruct":{input:1.5,output:2},"openrouter/openai/gpt-4o-2024-08-06":{input:2.5,output:10,cache_read:1.25},"openrouter/openai/gpt-6-astra":{input:10,output:50,cache_read:1,cache_write:12.5,tiers:[{input:20,output:75,cache_read:2,cache_write:25,tier:{type:"context",size:272e3}}],context_over_200k:{input:20,output:75,cache_read:2,cache_write:25}},"openrouter/openai/gpt-5.6-luna-pro":{input:.2,output:1.2,cache_read:.02,cache_write:.25,tiers:[{input:.4,output:1.8,cache_read:.04,cache_write:.5,tier:{type:"context",size:272e3}}],context_over_200k:{input:.4,output:1.8,cache_read:.04,cache_write:.5}},"openrouter/openai/gpt-5.1":{input:1.25,output:10,cache_read:.125},"openrouter/openai/gpt-5-image-mini":{input:2.5,output:2,cache_read:.25},"openrouter/openai/gpt-4o-mini":{input:.15,output:.6,cache_read:.075},"openrouter/openai/o3-pro":{input:20,output:80},"openrouter/openai/gpt-oss-20b":{input:.018,output:.09},"openrouter/openai/gpt-oss-safeguard-20b":{input:.075,output:.3,cache_read:.0375},"openrouter/openai/o3-mini-high":{input:1.1,output:4.4,cache_read:.55},"openrouter/openai/gpt-3.5-turbo-16k":{input:3,output:4},"openrouter/openai/gpt-5.2-chat":{input:1.75,output:14,cache_read:.175},"openrouter/openai/gpt-6-sol-pro":{input:2,output:10,cache_read:.2,cache_write:2.5,tiers:[{input:4,output:15,cache_read:.4,cache_write:5,tier:{type:"context",size:272e3}}],context_over_200k:{input:4,output:15,cache_read:.4,cache_write:5}},"openrouter/openai/gpt-5-image":{input:10,output:10,cache_read:1.25},"openrouter/openai/gpt-5.4-mini":{input:.75,output:4.5,cache_read:.075},"openrouter/openai/gpt-5.6-luna":{input:.2,output:1.2,cache_read:.02,cache_write:.25,tiers:[{input:.4,output:1.8,cache_read:.04,cache_write:.5,tier:{type:"context",size:272e3}}],context_over_200k:{input:.4,output:1.8,cache_read:.04,cache_write:.5}},"openrouter/openai/gpt-5.1-codex-max":{input:1.25,output:10,cache_read:.125},"openrouter/openai/gpt-5.2":{input:1.75,output:14,cache_read:.175},"openrouter/openai/gpt-5.5":{input:5,output:30,cache_read:.5,tiers:[{input:10,output:45,cache_read:1,tier:{type:"context",size:272e3}}],context_over_200k:{input:10,output:45,cache_read:1}},"openrouter/openai/gpt-4.1":{input:2,output:8,cache_read:.5},"openrouter/openai/gpt-4o-2024-11-20":{input:2.5,output:10,cache_read:1.25},"openrouter/openai/gpt-3.5-turbo-0613":{input:1,output:2},"openrouter/openai/gpt-4.1-mini":{input:.4,output:1.6,cache_read:.1},"openrouter/openai/gpt-5.6-terra-pro":{input:2,output:12,cache_read:.2,cache_write:2.5,tiers:[{input:4,output:18,cache_read:.4,cache_write:5,tier:{type:"context",size:272e3}}],context_over_200k:{input:4,output:18,cache_read:.4,cache_write:5}},"openrouter/openai/gpt-6-luna":{input:.1,output:.5,cache_read:.01,cache_write:.125,tiers:[{input:.2,output:.75,cache_read:.02,cache_write:.25,tier:{type:"context",size:272e3}}],context_over_200k:{input:.2,output:.75,cache_read:.02,cache_write:.25}},"openrouter/openai/o4-mini-high":{input:1.1,output:4.4,cache_read:.275},"openrouter/openai/gpt-6-luna-pro":{input:.1,output:.5,cache_read:.01,cache_write:.125,tiers:[{input:.2,output:.75,cache_read:.02,cache_write:.25,tier:{type:"context",size:272e3}}],context_over_200k:{input:.2,output:.75,cache_read:.02,cache_write:.25}},"openrouter/openai/gpt-5.6-terra":{input:2,output:12,cache_read:.2,cache_write:2.5,tiers:[{input:4,output:18,cache_read:.4,cache_write:5,tier:{type:"context",size:272e3}}],context_over_200k:{input:4,output:18,cache_read:.4,cache_write:5}},"openrouter/openai/gpt-4-turbo":{input:10,output:30},"openrouter/openai/gpt-oss-120b":{input:.15,output:.6,cache_read:.075},"openrouter/openai/gpt-5.1-codex-mini":{input:.25,output:2,cache_read:.03},"openrouter/openai/o3":{input:2,output:8,cache_read:.5},"openrouter/openai/gpt-5":{input:1.25,output:10,cache_read:.125},"openrouter/openai/gpt-5.6-sol":{input:2,output:10,cache_read:.2,cache_write:2.5,tiers:[{input:4,output:15,cache_read:.4,cache_write:5,tier:{type:"context",size:272e3}}],context_over_200k:{input:4,output:15,cache_read:.4,cache_write:5}},"openrouter/openai/gpt-6-sol":{input:2,output:10,cache_read:.2,cache_write:2.5,tiers:[{input:4,output:15,cache_read:.4,cache_write:5,tier:{type:"context",size:272e3}}],context_over_200k:{input:4,output:15,cache_read:.4,cache_write:5}},"openrouter/openai/o1-pro":{input:150,output:600},"openrouter/microsoft/phi-4":{input:.07,output:.14},"openrouter/microsoft/wizardlm-2-8x22b":{input:.62,output:.62},"perplexity/sonar-pro":{input:3,output:15},"perplexity/sonar-deep-research":{input:2,output:8,reasoning:3},"perplexity/sonar":{input:1,output:1},"perplexity/sonar-reasoning-pro":{input:2,output:8},"iteracompute/deepseek/deepseek-v4-flash-0731":{input:.34,output:1.05,cache_read:.035},"iteracompute/deepseek/deepseek-v4-pro-0813":{input:1.1,output:3.3,cache_read:.11},"iteracompute/z-ai/glm-5.3-flash":{input:.14,output:.49,cache_read:.03},"iteracompute/z-ai/glm-5.3":{input:1.2,output:3.5,cache_read:.26},"iteracompute/moonshotai/kimi-k3":{input:3,output:14.9,cache_read:.29},"iteracompute/minimax/minimax-m3":{input:.29,output:1.2,cache_read:.08},"iteracompute/ornith-ai/ornith-1.5-35b-a3b":{input:.3,output:3,cache_read:.03},"iteracompute/qwen/qwen3.8-27b":{input:.3,output:2.5,cache_read:.03},"iteracompute/qwen/qwen3.8-2.4t-a95b":{input:1.95,output:5.95,cache_read:.2},"meta/muse-spark-1.3":{input:1.25,output:4.25,cache_read:.15},"meta/muse-spark-1.1":{input:1.25,output:4.25,cache_read:.15},"meta/muse-spark-1.2":{input:1.25,output:4.25,cache_read:.15},"meta/muse-spark-1.2-contributor":{input:.1,output:.2,cache_read:.002},"meta/muse-spark-1.3-contributor":{input:.1,output:.2,cache_read:.002},"cline-pass/cline-pass/mimo-v2.6-pro":{input:.435,output:.87,cache_read:.0036},"cline-pass/cline-pass/qwen3.7-max":{input:2.5,output:7.5,cache_read:.5,cache_write:3.125},"cline-pass/cline-pass/mimo-v2.5":{input:.14,output:.28,cache_read:.0028},"cline-pass/cline-pass/glm-5.3-flash":{input:.15,output:.5,cache_read:.03},"cline-pass/cline-pass/qwen3.8-max":{input:2,output:6,cache_read:.25,cache_write:2.5},"cline-pass/cline-pass/kimi-k3":{input:3,output:15,cache_read:.3},"cline-pass/cline-pass/deepseek-v4.1-flash":{input:.15,output:.6,cache_read:.003},"cline-pass/cline-pass/kimi-k2.6":{input:.95,output:4,cache_read:.16},"cline-pass/cline-pass/mimo-v2.5-pro":{input:1.74,output:3.48,cache_read:.0145},"cline-pass/cline-pass/mimo-v2.6-flash":{input:.14,output:.28,cache_read:.0028},"cline-pass/cline-pass/minimax-m3":{input:.3,output:1.2,cache_read:.06},"cline-pass/cline-pass/glm-5.2":{input:1.4,output:4.4,cache_read:.26},"cline-pass/cline-pass/deepseek-v4-pro":{input:1.74,output:3.48,cache_read:.0145},"cline-pass/cline-pass/glm-5.3":{input:1.4,output:4.4,cache_read:.26},"cline-pass/cline-pass/kimi-k2.7-code":{input:.95,output:4,cache_read:.19},"cline-pass/cline-pass/qwen3.7-plus":{input:.4,output:1.6,cache_read:.04,cache_write:.5,tiers:[{input:1.2,output:4.8,cache_read:.12,cache_write:1.5,tier:{type:"context",size:256e3}}],context_over_200k:{input:1.2,output:4.8,cache_read:.12,cache_write:1.5}},"cline-pass/cline-pass/deepseek-v4-flash":{input:.14,output:.28,cache_read:.0028},"modal/thinkingmachines/Inkling-NVFP4":{input:1.2,output:5,cache_read:.27},"modal/Qwen/Qwen3.8-2.4T-A95B":{input:2,output:6,cache_read:.25},"modal/moonshotai/Kimi-K3":{input:3,output:15,reasoning:15,cache_read:.3},"modal/zai-org/GLM-5.3-Flash":{input:.45,output:1.5,cache_read:.09},"coralbricks/glm-5.3-fp4":{input:1.12,output:4.4,cache_read:0,cache_write:1.68},"coralbricks/glm-5.3-flash-fp4":{input:.15,output:.5,cache_read:0,cache_write:.23},"coralbricks/gpt-oss-120b":{input:.12,output:.6,cache_read:0,cache_write:.18},"coralbricks/deepseek-v4.1-flash-fast-fp4":{input:.3,output:1.2,cache_read:0,cache_write:.09},"routing-run/nemotron-3-ultra":{input:.1,output:.1},"routing-run/kimi-k2.6":{input:.275,output:1.1},"routing-run/qwen3.5-9b":{input:.16,output:.48},"routing-run/gpt-5.6-luna":{input:.7,output:4.2},"routing-run/claude-opus-4-8":{input:5,output:25},"routing-run/glm-5.2-nitro":{input:.8,output:2.4},"routing-run/glm-5.2":{input:.8,output:2.4},"routing-run/kimi-k2.6-nitro":{input:.275,output:1.1},"routing-run/deepseek-v4-pro":{input:.348,output:.696},"routing-run/claude-sonnet-4-6":{input:3,output:15},"routing-run/kimi-k2.7-code-nitro":{input:.275,output:1.1},"routing-run/gpt-5.6-terra":{input:1.5,output:9},"routing-run/kimi-k2.7-code":{input:.275,output:1.1},"routing-run/gpt-5.6-sol":{input:2.5,output:15},"routing-run/deepseek-v4-flash":{input:.112,output:.224},"echo/echo":{input:10,output:50},"neuralwatt/glm-5.2-short-fast":{input:1.45,output:4.5,cache_read:.145},"neuralwatt/kimi-k3-flex":{input:1.95,output:9.75,cache_read:.195},"neuralwatt/deepseek-v4-flash-flex":{input:.091,output:.182,cache_read:.0182},"neuralwatt/glm-5.3-flash":{input:.15,output:.5,cache_read:.03},"neuralwatt/glm-5.2-short-flex":{input:.9425,output:2.925,cache_read:.09425},"neuralwatt/qwen3.6-35b":{input:.29,output:1.15,cache_read:.029},"neuralwatt/glm-5.2-fast":{input:1.45,output:4.5,cache_read:.145},"neuralwatt/kimi-k3":{input:3,output:15,cache_read:.3},"neuralwatt/deepseek-v4.1-flash":{input:.15,output:.6,cache_read:.015},"neuralwatt/kimi-k3-fast":{input:3,output:15,cache_read:.3},"neuralwatt/qwen3.6-35b-flex":{input:.1885,output:.7475,cache_read:.01885},"neuralwatt/qwen-3.8-27b":{input:.45,output:3.2,cache_read:.25},"neuralwatt/glm-5.2-short":{input:1.45,output:4.5,cache_read:.145},"neuralwatt/glm-5.3-flash-flex":{input:.0975,output:.325,cache_read:.0195},"neuralwatt/qwen3.6-35b-fast":{input:.29,output:1.15,cache_read:.029},"neuralwatt/glm-5.2-flex":{input:.9425,output:2.925,cache_read:.09425},"neuralwatt/deepseek-v4-flash-speed":{input:.14,output:.28,cache_read:.028},"neuralwatt/glm-5.2":{input:1.45,output:4.5,cache_read:.145},"neuralwatt/glm-5.2-short-fast-flex":{input:.9425,output:2.925,cache_read:.09425},"neuralwatt/kimi-k2.7-code-fast":{input:.95,output:4,cache_read:.095},"neuralwatt/gemma-4-31b":{input:.144,output:.42,cache_read:.0144},"neuralwatt/glm-5.3-flex":{input:.9425,output:2.925,cache_read:.09425},"neuralwatt/deepseek-v4-pro":{input:1,output:3,cache_read:.1},"neuralwatt/qwen-3.8-27b-flex":{input:.2925,output:2.08,cache_read:.1625},"neuralwatt/kimi-k2.7-code-flex":{input:.6175,output:2.6,cache_read:.06175},"neuralwatt/glm-5.3":{input:1.45,output:4.5,cache_read:.145},"neuralwatt/kimi-k2.7-code":{input:.95,output:4,cache_read:.095},"neuralwatt/deepseek-v4.1-flash-flex":{input:.0975,output:.39,cache_read:.00975},"neuralwatt/deepseek-v4-flash":{input:.14,output:.28,cache_read:.028},"infer/infer/gpt-6-astra:official":{input:12.5,output:62.5,cache_read:1.25,cache_write:15.625},"infer/infer/gpt-5.6-sol:official":{input:2.5,output:12.5,cache_read:.25,cache_write:3.125},"azure/grok-4-1-fast-reasoning":{input:.2,output:.5,cache_read:.05},"azure/gpt-5.4":{input:2.5,output:15,cache_read:.25,tiers:[{input:5,output:22.5,cache_read:.5,tier:{type:"context",size:272e3}}],context_over_200k:{input:5,output:22.5,cache_read:.5}},"azure/deepseek-v3.2-speciale":{input:.58,output:1.68},"azure/claude-haiku-4-5":{input:1,output:5,cache_read:.1,cache_write:1.25},"azure/gpt-5.4-pro":{input:30,output:180,tiers:[{input:60,output:270,tier:{type:"context",size:272e3}}],context_over_200k:{input:60,output:270}},"azure/grok-4-1-fast-non-reasoning":{input:.2,output:.5,cache_read:.05},"azure/phi-4-reasoning":{input:.125,output:.5},"azure/text-embedding-3-small":{input:.02,output:0},"azure/gpt-5.4-nano":{input:.2,output:1.25,cache_read:.02},"azure/gpt-5.2-codex":{input:1.75,output:14,cache_read:.175},"azure/gpt-5.1-codex":{input:1.25,output:10,cache_read:.125},"azure/gpt-4o":{input:2.5,output:10,cache_read:1.25},"azure/ministral-3b":{input:.04,output:.04},"azure/gpt-chat-latest":{input:5,output:30,cache_read:.5},"azure/gpt-5-codex":{input:1.25,output:10,cache_read:.13},"azure/gpt-5-mini":{input:.25,output:2,cache_read:.03},"azure/gpt-image-2":{input:5,output:30,cache_read:1.25},"azure/o4-mini":{input:1.1,output:4.4,cache_read:.275},"azure/llama-4-maverick-17b-128e-instruct-fp8":{input:.25,output:1},"azure/o3-mini":{input:1.1,output:4.4,cache_read:.55},"azure/claude-opus-4-5":{input:5,output:25,cache_read:.5,cache_write:6.25},"azure/text-embedding-ada-002":{input:.1,output:0},"azure/gpt-5.3-codex":{input:1.75,output:14,cache_read:.175},"azure/gpt-4.1-nano":{input:.1,output:.4,cache_read:.025},"azure/gpt-5-nano":{input:.05,output:.4,cache_read:.01},"azure/phi-4-multimodal":{input:.08,output:.32,input_audio:4},"azure/kimi-k2.6":{input:.95,output:4},"azure/claude-sonnet-4-5":{input:3,output:15,cache_read:.3,cache_write:3.75},"azure/claude-opus-5-5":{input:4,output:20,cache_read:.2,cache_write:5},"azure/gpt-image-2.5-flare":{input:5,output:30,cache_read:1.25},"azure/claude-fable-5-1":{input:10,output:50,cache_read:.25,cache_write:12.5},"azure/mistral-medium-2505":{input:.4,output:2},"azure/cohere-embed-v3-multilingual":{input:.1,output:0},"azure/o1":{input:15,output:60,cache_read:7.5},"azure/codex-mini":{input:1.5,output:6,cache_read:.375},"azure/phi-4-reasoning-plus":{input:.125,output:.5},"azure/claude-mythos-5":{input:10,output:50,cache_read:1,cache_write:12.5},"azure/gpt-5-pro":{input:15,output:120},"azure/gpt-3.5-turbo-instruct":{input:1.5,output:2},"azure/gpt-3.5-turbo-0125":{input:.5,output:1.5},"azure/text-embedding-3-large":{input:.13,output:0},"azure/claude-opus-4-1":{input:15,output:75,cache_read:1.5,cache_write:18.75},"azure/cohere-embed-v-4-0":{input:.12,output:0},"azure/gpt-6-astra":{input:10,output:50,cache_read:1,cache_write:12.5,tiers:[{input:20,output:75,cache_read:2,cache_write:25,tier:{type:"context",size:272e3}}],context_over_200k:{input:20,output:75,cache_read:2,cache_write:25}},"azure/codestral-2501":{input:.3,output:.9},"azure/kimi-k2.5":{input:.6,output:3},"azure/gpt-5.1":{input:1.25,output:10,cache_read:.125},"azure/claude-opus-5":{input:5,output:25,cache_read:.5,cache_write:6.25},"azure/llama-3.3-70b-instruct":{input:.71,output:.71},"azure/gpt-4o-mini":{input:.15,output:.6,cache_read:.075},"azure/cohere-command-a":{input:2.5,output:10},"azure/cohere-embed-v3-english":{input:.1,output:0},"azure/model-router":{input:.14,output:0},"azure/gpt-image-2.5-sunburst":{input:5,output:30,cache_read:1.25},"azure/claude-fable-5":{input:10,output:50,cache_read:1,cache_write:12.5},"azure/gpt-image-1":{input:5,output:40,cache_read:1.25},"azure/gpt-5.4-mini":{input:.75,output:4.5,cache_read:.075},"azure/gpt-5.6-luna":{input:.2,output:1.2,cache_read:.02,cache_write:.25,tiers:[{input:.4,output:1.8,cache_read:.04,cache_write:.5,tier:{type:"context",size:272e3}}],context_over_200k:{input:.4,output:1.8,cache_read:.04,cache_write:.5}},"azure/gpt-5.1-codex-max":{input:1.25,output:10,cache_read:.125},"azure/gpt-5.2":{input:1.75,output:14,cache_read:.125},"azure/claude-opus-4-8":{input:5,output:25,cache_read:.5,cache_write:6.25,tiers:[{input:10,output:37.5,cache_read:1,cache_write:12.5,tier:{type:"context",size:2e5}}],context_over_200k:{input:10,output:37.5,cache_read:1,cache_write:12.5}},"azure/phi-4":{input:.125,output:.5},"azure/gpt-5.5":{input:5,output:30,cache_read:.5,tiers:[{input:10,output:45,cache_read:1,tier:{type:"context",size:272e3}}],context_over_200k:{input:10,output:45,cache_read:1}},"azure/mistral-small-2503":{input:.1,output:.3},"azure/phi-4-mini-reasoning":{input:.075,output:.3},"azure/gpt-4.1":{input:2,output:8,cache_read:.5},"azure/claude-sonnet-5":{input:2,output:10,cache_read:.2,cache_write:2.5},"azure/claude-opus-4-6":{input:5,output:25,cache_read:.5,cache_write:6.25,tiers:[{input:10,output:37.5,cache_read:1,cache_write:12.5,tier:{type:"context",size:2e5}}],context_over_200k:{input:10,output:37.5,cache_read:1,cache_write:12.5}},"azure/gpt-4-turbo-vision":{input:10,output:30},"azure/grok-4-20-non-reasoning":{input:2,output:6},"azure/gpt-3.5-turbo-1106":{input:1,output:2},"azure/gpt-4.1-mini":{input:.4,output:1.6,cache_read:.1},"azure/gpt-6-luna":{input:.1,output:.5,cache_read:.01,cache_write:.125,tiers:[{input:.2,output:.75,cache_read:.02,cache_write:.25,tier:{type:"context",size:272e3}}],context_over_200k:{input:.2,output:.75,cache_read:.02,cache_write:.25}},"azure/deepseek-r1":{input:1.35,output:5.4},"azure/deepseek-v4-pro":{input:1.74,output:3.48},"azure/claude-sonnet-4-6":{input:3,output:15,cache_read:.3,cache_write:3.75},"azure/llama-4-scout-17b-16e-instruct":{input:.2,output:.78},"azure/gpt-image-1.5":{input:5,output:32,cache_read:1.25},"azure/grok-4-20-reasoning":{input:2,output:6},"azure/gpt-5.6-terra":{input:2,output:12,cache_read:.2,cache_write:2.5,tiers:[{input:4,output:18,cache_read:.4,cache_write:5,tier:{type:"context",size:272e3}}],context_over_200k:{input:4,output:18,cache_read:.4,cache_write:5}},"azure/deepseek-v3.2":{input:.58,output:1.68},"azure/gpt-4-turbo":{input:10,output:30},"azure/gpt-5.1-codex-mini":{input:.25,output:2,cache_read:.025},"azure/o3":{input:2,output:8,cache_read:.5},"azure/claude-opus-4-7":{input:5,output:25,cache_read:.5,cache_write:6.25},"azure/kimi-k2.7-code":{input:.95,output:4,cache_read:.19},"azure/gpt-5":{input:1.25,output:10,cache_read:.13},"azure/gpt-5.6-sol":{input:4,output:20,cache_read:.5,cache_write:6.25,tiers:[{input:10,output:45,cache_read:1,cache_write:12.5,tier:{type:"context",size:272e3}}],context_over_200k:{input:10,output:45,cache_read:1,cache_write:12.5}},"azure/phi-4-mini":{input:.075,output:.3},"azure/deepseek-v4-flash":{input:.19,output:.51},"azure/gpt-6-sol":{input:2,output:10,cache_read:.2,cache_write:2.5,tiers:[{input:4,output:15,cache_read:.4,cache_write:5,tier:{type:"context",size:272e3}}],context_over_200k:{input:4,output:15,cache_read:.4,cache_write:5}},"freemodel/gpt-5.4":{input:2.5,output:15,cache_read:.25,cache_write:2.5},"freemodel/gpt-5.3-codex":{input:1.75,output:14,cache_read:.175,cache_write:1.75},"freemodel/claude-fable-5":{input:10,output:50,cache_read:1,cache_write:12.5},"freemodel/gpt-5.4-mini":{input:.75,output:4.5,cache_read:.075,cache_write:.75},"freemodel/claude-opus-4-8":{input:5,output:25,cache_read:.5,cache_write:6.25},"freemodel/gpt-5.5":{input:5,output:30,cache_read:.5,cache_write:5},"freemodel/claude-opus-4-6":{input:5,output:25,cache_read:.5,cache_write:6.25},"freemodel/claude-haiku-4-5-20251001":{input:1,output:5,cache_read:.1,cache_write:1.25},"freemodel/claude-sonnet-4-6":{input:3,output:15,cache_read:.3,cache_write:3.75},"freemodel/claude-opus-4-7":{input:5,output:25,cache_read:.5,cache_write:6.25},"azure-cognitive-services/gpt-5.4":{input:2.5,output:15,cache_read:.25,tiers:[{input:5,output:22.5,cache_read:.5,tier:{type:"context",size:272e3}}],context_over_200k:{input:5,output:22.5,cache_read:.5}},"azure-cognitive-services/claude-haiku-4-5":{input:1,output:5,cache_read:.1,cache_write:1.25},"azure-cognitive-services/gpt-5.4-pro":{input:30,output:180,tiers:[{input:60,output:270,tier:{type:"context",size:272e3}}],context_over_200k:{input:60,output:270}},"azure-cognitive-services/gpt-5.4-nano":{input:.2,output:1.25,cache_read:.02},"azure-cognitive-services/gpt-chat-latest":{input:5,output:30,cache_read:.5},"azure-cognitive-services/claude-opus-4-5":{input:5,output:25,cache_read:.5,cache_write:6.25},"azure-cognitive-services/kimi-k2.6":{input:.95,output:4},"azure-cognitive-services/claude-sonnet-4-5":{input:3,output:15,cache_read:.3,cache_write:3.75},"azure-cognitive-services/claude-opus-5-5":{input:4,output:20,cache_read:.2,cache_write:5},"azure-cognitive-services/claude-fable-5-1":{input:10,output:50,cache_read:.25,cache_write:12.5},"azure-cognitive-services/claude-mythos-5":{input:10,output:50,cache_read:1,cache_write:12.5},"azure-cognitive-services/claude-opus-4-1":{input:15,output:75,cache_read:1.5,cache_write:18.75},"azure-cognitive-services/kimi-k2.5":{input:.6,output:3},"azure-cognitive-services/claude-opus-5":{input:5,output:25,cache_read:.5,cache_write:6.25},"azure-cognitive-services/claude-fable-5":{input:10,output:50,cache_read:1,cache_write:12.5},"azure-cognitive-services/gpt-5.4-mini":{input:.75,output:4.5,cache_read:.075},"azure-cognitive-services/gpt-5.6-luna":{input:1,output:6,cache_read:.1,cache_write:1.25,tiers:[{input:2,output:9,cache_read:.2,cache_write:2.5,tier:{type:"context",size:272e3}}],context_over_200k:{input:2,output:9,cache_read:.2,cache_write:2.5}},"azure-cognitive-services/claude-opus-4-8":{input:5,output:25,cache_read:.5,cache_write:6.25,tiers:[{input:10,output:37.5,cache_read:1,cache_write:12.5,tier:{type:"context",size:2e5}}],context_over_200k:{input:10,output:37.5,cache_read:1,cache_write:12.5}},"azure-cognitive-services/claude-sonnet-5":{input:2,output:10,cache_read:.2,cache_write:2.5},"azure-cognitive-services/claude-opus-4-6":{input:5,output:25,cache_read:.5,cache_write:6.25,tiers:[{input:10,output:37.5,cache_read:1,cache_write:12.5,tier:{type:"context",size:2e5}}],context_over_200k:{input:10,output:37.5,cache_read:1,cache_write:12.5}},"azure-cognitive-services/claude-sonnet-4-6":{input:3,output:15,cache_read:.3,cache_write:3.75},"azure-cognitive-services/gpt-5.6-terra":{input:2.5,output:15,cache_read:.25,cache_write:3.125,tiers:[{input:5,output:22.5,cache_read:.5,cache_write:6.25,tier:{type:"context",size:272e3}}],context_over_200k:{input:5,output:22.5,cache_read:.5,cache_write:6.25}},"azure-cognitive-services/claude-opus-4-7":{input:5,output:25,cache_read:.5,cache_write:6.25},"azure-cognitive-services/gpt-5.6-sol":{input:5,output:30,cache_read:.5,tiers:[{input:10,output:45,cache_read:1,tier:{type:"context",size:272e3}}],context_over_200k:{input:10,output:45,cache_read:1}},"azure-cognitive-services/phi-4-mini":{input:.075,output:.3},"azure-cognitive-services/gpt-5":{input:1.25,output:10,cache_read:.13},"azure-cognitive-services/o3":{input:2,output:8,cache_read:.5},"azure-cognitive-services/gpt-5.1-codex-mini":{input:.25,output:2,cache_read:.025},"azure-cognitive-services/gpt-4-turbo":{input:10,output:30},"azure-cognitive-services/deepseek-v3.2":{input:.58,output:1.68},"azure-cognitive-services/llama-4-scout-17b-16e-instruct":{input:.2,output:.78},"azure-cognitive-services/deepseek-r1":{input:1.35,output:5.4},"azure-cognitive-services/gpt-4.1-mini":{input:.4,output:1.6,cache_read:.1},"azure-cognitive-services/gpt-3.5-turbo-1106":{input:1,output:2},"azure-cognitive-services/gpt-4-turbo-vision":{input:10,output:30},"azure-cognitive-services/gpt-4.1":{input:2,output:8,cache_read:.5},"azure-cognitive-services/phi-4-mini-reasoning":{input:.075,output:.3},"azure-cognitive-services/mistral-small-2503":{input:.1,output:.3},"azure-cognitive-services/gpt-5.5":{input:5,output:30,cache_read:.5,tiers:[{input:10,output:45,cache_read:1,tier:{type:"context",size:272e3}}],context_over_200k:{input:10,output:45,cache_read:1}},"azure-cognitive-services/phi-4":{input:.125,output:.5},"azure-cognitive-services/gpt-5.2":{input:1.75,output:14,cache_read:.125},"azure-cognitive-services/model-router":{input:.14,output:0},"azure-cognitive-services/cohere-embed-v3-english":{input:.1,output:0},"azure-cognitive-services/cohere-command-a":{input:2.5,output:10},"azure-cognitive-services/gpt-4o-mini":{input:.15,output:.6,cache_read:.075},"azure-cognitive-services/llama-3.3-70b-instruct":{input:.71,output:.71},"azure-cognitive-services/gpt-5.1":{input:1.25,output:10,cache_read:.125},"azure-cognitive-services/codestral-2501":{input:.3,output:.9},"azure-cognitive-services/cohere-embed-v-4-0":{input:.12,output:0},"azure-cognitive-services/text-embedding-3-large":{input:.13,output:0},"azure-cognitive-services/gpt-3.5-turbo-0125":{input:.5,output:1.5},"azure-cognitive-services/gpt-3.5-turbo-instruct":{input:1.5,output:2},"azure-cognitive-services/gpt-5-pro":{input:15,output:120},"azure-cognitive-services/phi-4-reasoning-plus":{input:.125,output:.5},"azure-cognitive-services/codex-mini":{input:1.5,output:6,cache_read:.375},"azure-cognitive-services/o1":{input:15,output:60,cache_read:7.5},"azure-cognitive-services/cohere-embed-v3-multilingual":{input:.1,output:0},"azure-cognitive-services/mistral-medium-2505":{input:.4,output:2},"azure-cognitive-services/phi-4-multimodal":{input:.08,output:.32,input_audio:4},"azure-cognitive-services/gpt-5-nano":{input:.05,output:.4,cache_read:.01},"azure-cognitive-services/gpt-4.1-nano":{input:.1,output:.4,cache_read:.025},"azure-cognitive-services/gpt-5.3-codex":{input:1.75,output:14,cache_read:.175},"azure-cognitive-services/text-embedding-ada-002":{input:.1,output:0},"azure-cognitive-services/o3-mini":{input:1.1,output:4.4,cache_read:.55},"azure-cognitive-services/llama-4-maverick-17b-128e-instruct-fp8":{input:.25,output:1},"azure-cognitive-services/o4-mini":{input:1.1,output:4.4,cache_read:.275},"azure-cognitive-services/gpt-5-mini":{input:.25,output:2,cache_read:.03},"azure-cognitive-services/gpt-5-codex":{input:1.25,output:10,cache_read:.13},"azure-cognitive-services/ministral-3b":{input:.04,output:.04},"azure-cognitive-services/gpt-4o":{input:2.5,output:10,cache_read:1.25},"azure-cognitive-services/gpt-5.1-codex":{input:1.25,output:10,cache_read:.125},"azure-cognitive-services/gpt-5.2-codex":{input:1.75,output:14,cache_read:.175},"azure-cognitive-services/text-embedding-3-small":{input:.02,output:0},"azure-cognitive-services/phi-4-reasoning":{input:.125,output:.5},"azure-cognitive-services/deepseek-v3.2-speciale":{input:.58,output:1.68},"moark/GLM-4.7":{input:3.5,output:14},"moark/MiniMax-M2.1":{input:2.1,output:8.4,cache_read:2.1,cache_write:8.4},"qihang-ai/gpt-5.2-codex":{input:.14,output:1.14},"qihang-ai/gemini-3-pro-preview":{input:.57,output:3.43},"qihang-ai/gpt-5-mini":{input:.04,output:.29},"qihang-ai/claude-opus-4-5-20251101":{input:.71,output:3.57},"qihang-ai/gemini-2.5-flash":{input:.09,output:.71,tiers:[{input:.09,output:.71,tier:{type:"context",size:2e5}}],context_over_200k:{input:.09,output:.71}},"qihang-ai/gpt-5.2":{input:.25,output:2},"qihang-ai/claude-sonnet-4-5-20250929":{input:.43,output:2.14},"qihang-ai/gemini-3-flash-preview":{input:.07,output:.43,tiers:[{input:.07,output:.43,tier:{type:"context",size:2e5}}],context_over_200k:{input:.07,output:.43}},"qihang-ai/claude-haiku-4-5-20251001":{input:.14,output:.71},"ai-router/gpt-5.4":{input:2.5,output:15,cache_read:.25},"ai-router/gpt-5.6-luna":{input:1,output:6,cache_read:.1,cache_write:1.25},"ai-router/gpt-5.5":{input:5,output:30,cache_read:.5},"ai-router/gpt-5.6-terra":{input:2.5,output:15,cache_read:.25,cache_write:3.125},"ai-router/gpt-5.6-sol":{input:5,output:30,cache_read:.5,cache_write:6.25},"llmtr/muse-glimmer-30b-tr":{input:2,output:5,cache_read:.5},"llmtr/magibu-11b-v8":{input:.1,output:.5},"llmtr/gemma-4":{input:2,output:5,cache_read:.5},"llmtr/trendyol-asure-12b":{input:.1,output:.5,cache_read:.025},"llmtr/medgemma-4b":{input:3,output:5},"llmtr/qwen3-6-35b":{input:5,output:10},"llmtr/publicai/apertus-70b-instruct":{input:.82,output:2.92},"llmtr/publicai/apertus-8b-instruct":{input:.1,output:.2},"llmtr/thinkingmachines/inkling-small":{input:.58,output:1.44},"llmtr/thinkingmachines/inkling":{input:1.87,output:4.68},"llmtr/perplexity/sonar-deep-research":{input:2,output:8,reasoning:3},"llmtr/meta/muse-spark-1.2-contributor":{input:.1,output:.2},"llmtr/upstage/solar-pro4":{input:.03,output:.12},"llmtr/upstage/solar-pro3":{input:.15,output:.6},"llmtr/upstage/solar-pro2":{input:.15,output:.6},"llmtr/google/gemini-2.5-flash-lite":{input:.1,output:.1},"llmtr/mimo/mimo-v2.5":{input:.14,output:.28},"llmtr/mimo/mimo-v2.5-pro":{input:.435,output:.87},"llmtr/sakana/fugu-ultra":{input:5,output:30},"llmtr/mistral/voxtral-small-latest":{input:.1,output:.3},"llmtr/qwen/qwen-flash":{input:.05,output:.4},"llmtr/qwen/qwen3-vl-plus":{input:.2,output:1.6},"llmtr/qwen/qwen3.5-plus":{input:.4,output:2.4},"llmtr/qwen/qwen-plus":{input:.4,output:1.2},"llmtr/qwen/qwen3-max":{input:1.2,output:6},"llmtr/qwen/qwen3.6-flash":{input:.25,output:1.5},"llmtr/qwen/qwen3-coder-flash":{input:.3,output:1.5},"llmtr/qwen/qwen3-coder-plus":{input:1,output:5},"llmtr/qwen/qwen3.5-397b-a17b":{input:.6,output:3.6},"llmtr/qwen/qwen3.6-plus":{input:.5,output:3},"llmtr/qwen/qwen3.7-plus":{input:.4,output:1.6},"alibaba/qwen-flash":{input:.05,output:.4},"alibaba/qwen3.7-max":{input:2.5,output:7.5,cache_read:.5,cache_write:3.125},"alibaba/qwen2-5-32b-instruct":{input:.7,output:2.8},"alibaba/qwq-plus":{input:.8,output:2.4},"alibaba/qwen2-5-vl-72b-instruct":{input:2.8,output:8.4},"alibaba/qwen3-vl-plus":{input:.2,output:1.6,reasoning:4.8},"alibaba/qwen3.5-27b":{input:.3,output:2.4},"alibaba/deepseek-v4-flash-0731":{input:.2,output:.4,cache_read:.04},"alibaba/qwen-max":{input:1.6,output:6.4},"alibaba/qwen3-next-80b-a3b-thinking":{input:.5,output:6},"alibaba/qwen3.8-max":{input:2,output:6,cache_read:.25,cache_write:2.5},"alibaba/kimi-k3":{input:3,output:15,cache_read:.3},"alibaba/qwen-plus-character-ja":{input:.5,output:1.4},"alibaba/qwen3.5-plus":{input:.4,output:2.4,reasoning:2.4},"alibaba/qwen3-livetranslate-flash-realtime":{input:10,output:10,input_audio:10,output_audio:38},"alibaba/qwen2-5-72b-instruct":{input:1.4,output:5.6},"alibaba/qwen3-32b":{input:.7,output:2.8,reasoning:8.4},"alibaba/qwen-plus":{input:.4,output:1.2,reasoning:4},"alibaba/qwen3-max":{input:1.2,output:6},"alibaba/qwen-omni-turbo-realtime":{input:.27,output:1.07,input_audio:4.44,output_audio:8.89},"alibaba/qwen3-coder-480b-a35b-instruct":{input:1.5,output:7.5,tiers:[{input:2.7,output:13.5,tier:{type:"context",size:32e3}},{input:4.5,output:22.5,tier:{type:"context",size:128e3}}]},"alibaba/qwen-turbo":{input:.05,output:.2,reasoning:.5},"alibaba/qwen3-coder-30b-a3b-instruct":{input:.45,output:2.25,tiers:[{input:.75,output:3.75,tier:{type:"context",size:32e3}},{input:1.2,output:6,tier:{type:"context",size:128e3}}]},"alibaba/qvq-max":{input:1.2,output:4.8},"alibaba/qwen2-5-7b-instruct":{input:.175,output:.7},"alibaba/qwen3-omni-flash":{input:.43,output:1.66,input_audio:3.81,output_audio:15.11},"alibaba/qwen-vl-max":{input:.8,output:3.2},"alibaba/qwen3-235b-a22b":{input:.7,output:2.8,reasoning:8.4},"alibaba/qwen3-vl-30b-a3b":{input:.2,output:.8,reasoning:2.4},"alibaba/qwen3.5-122b-a10b":{input:.4,output:3.2},"alibaba/qwen3.6-35b-a3b":{input:.248,output:1.485},"alibaba/qwen3-next-80b-a3b-instruct":{input:.5,output:2},"alibaba/qwen-vl-plus":{input:.21,output:.63},"alibaba/qwen3.6-flash":{input:.1875,output:1.125,cache_write:.234375},"alibaba/qwen3-coder-flash":{input:.3,output:1.5},"alibaba/qwen2-5-omni-7b":{input:.1,output:.4,input_audio:6.76},"alibaba/qwen-mt-plus":{input:2.46,output:7.37},"alibaba/qwen3-vl-235b-a22b":{input:.7,output:2.8,reasoning:8.4},"alibaba/qwen3-coder-plus":{input:1,output:5},"alibaba/qwen2-5-14b-instruct":{input:.35,output:1.4},"alibaba/qwen3.8-flash":{input:.15,output:.47,cache_read:.016,cache_write:.2},"alibaba/qwen2-5-vl-7b-instruct":{input:.35,output:1.05},"alibaba/qwen3.5-35b-a3b":{input:.25,output:2},"alibaba/qwen3.6-max-preview":{input:1.3,output:7.8,cache_read:.13,cache_write:1.625},"alibaba/qwen-mt-turbo":{input:.16,output:.49},"alibaba/qwen3.5-397b-a17b":{input:.6,output:3.6},"alibaba/qwen3-8b":{input:.18,output:.7,reasoning:2.1},"alibaba/glm-5.2":{input:1.4,output:4.4,cache_read:.28,cache_write:0},"alibaba/qwen-omni-turbo":{input:.07,output:.27,input_audio:4.44,output_audio:8.89},"alibaba/qwen3-omni-flash-realtime":{input:.52,output:1.99,input_audio:4.57,output_audio:18.13},"alibaba/qwen3-asr-flash":{input:.035,output:.035},"alibaba/qwen3.6-27b":{input:.6,output:3.6},"alibaba/qwen3.6-plus":{input:.5,output:3,cache_read:.05,cache_write:.625,tiers:[{input:2,output:6,cache_read:.2,cache_write:2.5,tier:{type:"context",size:256e3}}],context_over_200k:{input:2,output:6,cache_read:.2,cache_write:2.5}},"alibaba/qwen3-14b":{input:.35,output:1.4,reasoning:4.2},"alibaba/qwen3.7-plus":{input:.5,output:3,cache_read:.05,cache_write:.625,tiers:[{input:2,output:6,cache_read:.2,cache_write:2.5,tier:{type:"context",size:256e3}}],context_over_200k:{input:2,output:6,cache_read:.2,cache_write:2.5}},"alibaba/qwen-vl-ocr":{input:.72,output:.72},"auriko/qwen-3.6-plus":{input:.5,output:3,cache_read:.1,tiers:[{input:2,output:6,cache_read:.2,cache_write:2.5,tier:{type:"context",size:256e3}}],context_over_200k:{input:2,output:6,cache_read:.2,cache_write:2.5}},"auriko/minimax-m2-7-highspeed":{input:.6,output:2.4,cache_write:.375},"auriko/kimi-k2.6":{input:.95,output:4,cache_read:.16},"auriko/grok-4.3":{input:1.25,output:2.5,cache_read:.2,tiers:[{input:2.5,output:5,cache_read:.4,tier:{type:"context",size:2e5}}],context_over_200k:{input:2.5,output:5,cache_read:.4}},"auriko/gemini-3.1-pro-preview":{input:2,output:12,cache_read:.2,tiers:[{input:4,output:18,cache_read:.4,tier:{type:"context",size:2e5}}],context_over_200k:{input:4,output:18,cache_read:.4}},"auriko/kimi-k2.5":{input:.5,output:2.8},"auriko/gemini-2.5-pro":{input:1.25,output:10,cache_read:.125,tiers:[{input:2.5,output:15,cache_read:.25,tier:{type:"context",size:2e5}}],context_over_200k:{input:2.5,output:15,cache_read:.25}},"auriko/gemini-2.5-flash":{input:.3,output:2.5,cache_read:.03},"auriko/minimax-m2-7":{input:.3,output:1.2,cache_write:.375},"auriko/claude-opus-4-6":{input:5,output:25,cache_read:.5,cache_write:6.25},"auriko/glm-5.1":{input:1.4,output:4.4,cache_read:.26},"auriko/deepseek-v4-pro":{input:.435,output:.87,cache_read:.003625},"auriko/claude-sonnet-4-6":{input:3,output:15,cache_read:.3,cache_write:3.75},"auriko/claude-opus-4-7":{input:5,output:25,cache_read:.5,cache_write:6.25},"auriko/deepseek-v4-flash":{input:.14,output:.28,cache_read:.0028},"zenmux/anthropic/claude-opus-4.1":{input:15,output:75,cache_read:1.5,cache_write:18.75},"zenmux/anthropic/claude-opus-4.5":{input:5,output:25,cache_read:.5,cache_write:6.25},"zenmux/anthropic/claude-opus-4.6":{input:5,output:25,cache_read:.5,cache_write:6.25},"zenmux/anthropic/claude-3.5-haiku":{input:.8,output:4,cache_read:.08,cache_write:1},"zenmux/anthropic/claude-opus-4.7":{input:5,output:25,cache_read:.5,cache_write:6.25},"zenmux/anthropic/claude-opus-4.8":{input:5,output:25,cache_read:.5,cache_write:6.25},"zenmux/anthropic/claude-haiku-4.5":{input:1,output:5,cache_read:.1,cache_write:1.25},"zenmux/anthropic/claude-fable-5.1":{input:10,output:50,cache_read:.25,cache_write:12.5},"zenmux/anthropic/claude-sonnet-4.5":{input:3,output:15,cache_read:.3,cache_write:3.75},"zenmux/anthropic/claude-fable-5":{input:10,output:50,cache_read:1,cache_write:12.5},"zenmux/anthropic/claude-3.7-sonnet":{input:3,output:15,cache_read:.3,cache_write:3.75},"zenmux/anthropic/claude-sonnet-4":{input:3,output:15,cache_read:.3,cache_write:3.75},"zenmux/anthropic/claude-sonnet-5":{input:2,output:10,cache_read:.2,cache_write:4},"zenmux/anthropic/claude-sonnet-4.6":{input:3,output:15,cache_read:.3,cache_write:3.75},"zenmux/anthropic/claude-opus-5.5":{input:4,output:20,cache_read:.2,cache_write:5},"zenmux/anthropic/claude-opus-4":{input:15,output:75,cache_read:1.5,cache_write:18.75},"zenmux/deepseek/deepseek-v4.1-flash":{input:.15,output:.6,cache_read:.003},"zenmux/deepseek/deepseek-chat":{input:.28,output:.42,cache_read:.03},"zenmux/deepseek/deepseek-v3.2-exp":{input:.22,output:.33},"zenmux/deepseek/deepseek-v4-pro":{input:.435,output:.87,cache_read:.003625},"zenmux/deepseek/deepseek-v3.2":{input:.28,output:.43},"zenmux/deepseek/deepseek-v4-flash":{input:.14,output:.28,cache_read:.0028},"zenmux/tencent/hy3-preview":{input:.172,output:.572,cache_read:.058,cache_write:0},"zenmux/z-ai/glm-4.6v":{input:.1456,output:.4367,cache_read:.0291,tiers:[{input:.2911,output:.8734,cache_read:.0582,tier:{type:"context",size:32e3}}]},"zenmux/z-ai/glm-4.5":{input:.2911,output:1.1645,cache_read:.0582,tiers:[{input:.5823,output:2.3291,cache_read:.1165,tier:{type:"context",size:32e3}}]},"zenmux/z-ai/glm-5v-turbo":{input:.726,output:3.1946,cache_read:.1743,tiers:[{input:1.0165,output:3.7754,cache_read:.2614,tier:{type:"context",size:32e3}}]},"zenmux/z-ai/glm-5.3-flash":{input:.15,output:.5,cache_read:.03},"zenmux/z-ai/glm-4.6":{input:.2911,output:1.1645,cache_read:.0582,tiers:[{input:.5823,output:2.3291,cache_read:.1165,tier:{type:"context",size:32e3}}]},"zenmux/z-ai/glm-5":{input:.58,output:2.6,cache_read:.14,tiers:[{input:.87,output:3.18,cache_read:.22,tier:{type:"context",size:32e3}}]},"zenmux/z-ai/glm-4.6v-flash":{input:.0218,output:.2184,cache_read:.0044,tiers:[{input:.0437,output:.4367,cache_read:.0044,tier:{type:"context",size:32e3}}]},"zenmux/z-ai/glm-5.3-flashx":{input:.375,output:1.25,cache_read:.075},"zenmux/z-ai/glm-4.7":{input:.2911,output:1.1645,cache_read:.0582,tiers:[{input:.5823,output:2.3291,cache_read:.1165,tier:{type:"context",size:32e3}}]},"zenmux/z-ai/glm-5.2":{input:.98,output:3.08,cache_read:.182},"zenmux/z-ai/glm-5.1":{input:.8781,output:3.5126,cache_read:.1903,tiers:[{input:1.1709,output:4.098,cache_read:.2927,tier:{type:"context",size:32e3}}]},"zenmux/z-ai/glm-4.7-flashx":{input:.0728,output:.4367,cache_read:.0146},"zenmux/z-ai/glm-5-turbo":{input:.73,output:3.19,cache_read:.174,tiers:[{input:1.02,output:3.77,cache_read:.261,tier:{type:"context",size:32e3}}]},"zenmux/z-ai/glm-4.5-air":{input:.1165,output:.2911,cache_read:.0233,tiers:[{input:.1747,output:1.1645,cache_read:.0349,tier:{type:"context",size:32e3}}]},"zenmux/z-ai/glm-5.3":{input:1.4,output:4.4,cache_read:.26},"zenmux/kuaishou/kat-coder-pro-v2":{input:.3,output:1.2,cache_read:.06},"zenmux/baidu/ernie-5.0-thinking-preview":{input:.84,output:3.37},"zenmux/x-ai/grok-4.3":{input:1.25,output:2.5,cache_read:.2,tiers:[{input:2.5,output:5,cache_read:.4,tier:{type:"context",size:2e5}}],context_over_200k:{input:2.5,output:5,cache_read:.4}},"zenmux/x-ai/grok-4.5":{input:2,output:6,cache_read:.5,tiers:[{input:4,output:12,cache_read:1,tier:{type:"context",size:2e5}}],context_over_200k:{input:4,output:12,cache_read:1}},"zenmux/x-ai/grok-build-0.1":{input:1,output:2,cache_read:.2},"zenmux/x-ai/grok-4.2-fast":{input:2,output:6,cache_read:.2,tiers:[{input:4,output:12,cache_read:.2,tier:{type:"context",size:128e3}}]},"zenmux/x-ai/grok-4.2-fast-non-reasoning":{input:2,output:6,cache_read:.2,tiers:[{input:4,output:12,cache_read:.2,tier:{type:"context",size:128e3}}]},"zenmux/x-ai/grok-4.6":{input:2,output:6,cache_read:.5,tiers:[{input:4,output:12,cache_read:1,tier:{type:"context",size:2e5}}],context_over_200k:{input:4,output:12,cache_read:1}},"zenmux/volcengine/doubao-seed-2.0-mini":{input:.03,output:.28,cache_read:.01,cache_write:.0024},"zenmux/volcengine/doubao-seed-2.0-lite":{input:.09,output:.51,cache_read:.02,cache_write:.0024},"zenmux/volcengine/doubao-seed-code":{input:.17,output:1.12,cache_read:.03},"zenmux/volcengine/doubao-seed-2.0-pro":{input:.45,output:2.24,cache_read:.09,cache_write:.0024},"zenmux/volcengine/doubao-seed-1.8":{input:.11,output:.28,cache_read:.02,cache_write:.0024},"zenmux/volcengine/doubao-seed-2.0-code":{input:.9,output:4.48},"zenmux/google/gemini-3.1-pro-preview":{input:2,output:12,cache_read:.2,cache_write:4.5},"zenmux/google/gemini-3.5-flash":{input:1.5,output:9,cache_read:.15},"zenmux/google/gemini-2.5-pro":{input:1.25,output:10,cache_read:.31,cache_write:4.5},"zenmux/google/gemini-2.5-flash":{input:.3,output:2.5,cache_read:.07,cache_write:1},"zenmux/google/gemini-3-flash-preview":{input:.5,output:3,cache_read:.05,cache_write:1},"zenmux/google/gemini-2.5-flash-lite":{input:.1,output:.4,cache_read:.03,cache_write:1},"zenmux/google/gemini-3.1-flash-lite-preview":{input:.25,output:1.5},"zenmux/google/gemini-3.1-flash-lite":{input:.25,output:1.5,cache_read:.025},"zenmux/sapiens-ai/agnes-1.5-lite":{input:.12,output:.6},"zenmux/sapiens-ai/agnes-1.5-pro":{input:.16,output:.8},"zenmux/inclusionai/ring-2.6-1t":{input:.3,output:2.5,cache_read:.06},"zenmux/inclusionai/ring-1t":{input:.56,output:2.24,cache_read:.11},"zenmux/inclusionai/ling-1t":{input:.56,output:2.24,cache_read:.11},"zenmux/moonshotai/kimi-k3":{input:3,output:15,cache_read:.3},"zenmux/moonshotai/kimi-k2.7-code-highspeed":{input:1.9,output:8,cache_read:.38},"zenmux/moonshotai/kimi-k2.6":{input:.95,output:4,cache_read:.16},"zenmux/moonshotai/kimi-k2-thinking":{input:.6,output:2.5,cache_read:.15},"zenmux/moonshotai/kimi-k2.5":{input:.58,output:3.02,cache_read:.1},"zenmux/moonshotai/kimi-k2-0905":{input:.6,output:2.5,cache_read:.15},"zenmux/moonshotai/kimi-k2-thinking-turbo":{input:1.15,output:8,cache_read:.15},"zenmux/moonshotai/kimi-k2.7-code":{input:.95,output:4,cache_read:.16},"zenmux/xiaomi/mimo-v2.6-pro":{input:.435,output:.87,cache_read:.0036},"zenmux/xiaomi/mimo-v2-flash":{input:.1,output:.3,cache_read:.01},"zenmux/xiaomi/mimo-v2.5":{input:.4,output:2,cache_read:.08,tiers:[{input:.8,output:4,cache_read:.16,tier:{type:"context",size:256e3}}],context_over_200k:{input:.8,output:4,cache_read:.16}},"zenmux/xiaomi/mimo-v2-omni":{input:.4,output:2,cache_read:.08},"zenmux/xiaomi/mimo-v2-pro":{input:1,output:3,cache_read:.2,tiers:[{input:2,output:6,cache_read:.4,tier:{type:"context",size:256e3}}],context_over_200k:{input:2,output:6,cache_read:.4}},"zenmux/xiaomi/mimo-v2.5-pro":{input:1,output:3,cache_read:.2,tiers:[{input:2,output:6,cache_read:.4,tier:{type:"context",size:256e3}}],context_over_200k:{input:2,output:6,cache_read:.4}},"zenmux/minimax/minimax-m2.5-lightning":{input:.6,output:4.8,cache_read:.06,cache_write:.75},"zenmux/minimax/minimax-m2.5":{input:.3,output:1.2,cache_read:.03,cache_write:.375},"zenmux/minimax/minimax-m2.7":{input:.3055,output:1.2219},"zenmux/minimax/minimax-m3":{input:.6,output:2.4},"zenmux/minimax/minimax-m2.7-highspeed":{input:.611,output:2.4439},"zenmux/minimax/minimax-m2.1":{input:.3,output:1.2,cache_read:.03,cache_write:.38},"zenmux/minimax/minimax-m2":{input:.3,output:1.2,cache_read:.03,cache_write:.38},"zenmux/stepfun/step-3":{input:.21,output:.57},"zenmux/stepfun/step-3.5-flash":{input:.1,output:.3},"zenmux/stepfun/step-3.7-flash":{input:.2,output:1.15},"zenmux/qwen/qwen3.5-flash":{input:.1,output:.4},"zenmux/qwen/qwen3.7-max":{input:2.5,output:7.5,cache_read:.5,cache_write:3.125},"zenmux/qwen/qwen3.5-plus":{input:.8,output:4.8},"zenmux/qwen/qwen3-max":{input:1.2,output:6},"zenmux/qwen/qwen3-coder-plus":{input:1,output:5,cache_read:.1,cache_write:1.25},"zenmux/qwen/qwen3.6-plus":{input:.5,output:3,cache_read:.05,cache_write:.625,tiers:[{input:2,output:6,cache_read:.2,cache_write:2.5,tier:{type:"context",size:256e3}}],context_over_200k:{input:2,output:6,cache_read:.2,cache_write:2.5}},"zenmux/qwen/qwen3.7-plus":{input:.4,output:1.6,cache_read:.08,cache_write:.5,tiers:[{input:1.2,output:4.8,cache_read:.24,cache_write:1.5,tier:{type:"context",size:256e3}}],context_over_200k:{input:1.2,output:4.8,cache_read:.24,cache_write:1.5}},"zenmux/openai/gpt-5.4":{input:3.75,output:18.75},"zenmux/openai/gpt-5.4-pro":{input:45,output:225},"zenmux/openai/gpt-5.3-chat":{input:1.75,output:14},"zenmux/openai/gpt-5.5-pro":{input:30,output:180,tiers:[{input:60,output:270,tier:{type:"context",size:272e3}}],context_over_200k:{input:60,output:270}},"zenmux/openai/gpt-5.4-nano":{input:.2,output:1.25},"zenmux/openai/gpt-5.2-codex":{input:1.75,output:14,cache_read:.17},"zenmux/openai/gpt-5.1-codex":{input:1.25,output:10,cache_read:.12},"zenmux/openai/gpt-5-codex":{input:1.25,output:10,cache_read:.12},"zenmux/openai/gpt-5.2-pro":{input:21,output:168},"zenmux/openai/gpt-5.3-codex":{input:1.75,output:14},"zenmux/openai/gpt-5.5-instant":{input:5,output:30,cache_read:.5},"zenmux/openai/gpt-6-astra":{input:10,output:50,cache_read:1,cache_write:12.5,tiers:[{input:20,output:75,cache_read:2,cache_write:25,tier:{type:"context",size:272e3}}],context_over_200k:{input:20,output:75,cache_read:2,cache_write:25}},"zenmux/openai/gpt-5.1":{input:1.25,output:10,cache_read:.12},"zenmux/openai/gpt-5.4-mini":{input:.75,output:4.5},"zenmux/openai/gpt-5.6-luna":{input:1,output:6,cache_read:.1,cache_write:1.25,tiers:[{input:2,output:9,cache_read:.2,cache_write:2.5,tier:{type:"context",size:272e3}}],context_over_200k:{input:2,output:9,cache_read:.2,cache_write:2.5}},"zenmux/openai/gpt-5.2":{input:1.75,output:14,cache_read:.17},"zenmux/openai/gpt-5.5":{input:5,output:30,cache_read:.5,tiers:[{input:10,output:45,cache_read:1,tier:{type:"context",size:272e3}}],context_over_200k:{input:10,output:45,cache_read:1}},"zenmux/openai/gpt-5.1-chat":{input:1.25,output:10,cache_read:.12},"zenmux/openai/gpt-5.6-terra":{input:2.5,output:15,cache_read:.25,cache_write:3.125,tiers:[{input:5,output:22.5,cache_read:.5,cache_write:6.25,tier:{type:"context",size:272e3}}],context_over_200k:{input:5,output:22.5,cache_read:.5,cache_write:6.25}},"zenmux/openai/gpt-5.1-codex-mini":{input:.25,output:2,cache_read:.03},"zenmux/openai/gpt-5":{input:1.25,output:10,cache_read:.12},"zenmux/openai/gpt-5.6-sol":{input:5,output:30,cache_read:.5,cache_write:6.25,tiers:[{input:10,output:45,cache_read:1,cache_write:12.5,tier:{type:"context",size:272e3}}],context_over_200k:{input:10,output:45,cache_read:1,cache_write:12.5}},"zenmux/openai/gpt-6-sol":{input:2,output:10,cache_read:.2,cache_write:2.5,tiers:[{input:4,output:15,cache_read:.4,cache_write:5,tier:{type:"context",size:272e3}}],context_over_200k:{input:4,output:15,cache_read:.4,cache_write:5}},"unorouter/gpt-5.4":{input:1.8,output:10.8},"unorouter/kimi-k2.6":{input:1.2675,output:5.3368},"unorouter/minimax-m2.7":{input:.819,output:3.276},"unorouter/gemini-3.5-flash":{input:.1857,output:1.1142},"unorouter/gpt-5.2":{input:1.05,output:8.4},"unorouter/claude-opus-4-8":{input:.425,output:2.125},"unorouter/gpt-5.5":{input:.1875,output:1.125},"unorouter/claude-sonnet-5":{input:1.44,output:7.2},"unorouter/glm-5.2":{input:1.6001,output:5.0288},"unorouter/claude-haiku-4-5-20251001":{input:1.2,output:6},"unorouter/deepseek-v4-pro":{input:.8999,output:1.7999},"unorouter/deepseek-v4-flash":{input:.0625,output:.125},"salad-cloud/qwen3.6-35b-a3b":{input:.09,output:.6},"vispark/vispark/vision-large":{input:7.37,output:22.11},"vispark/vispark/vision-small":{input:1.05,output:3.16},"vispark/vispark/vision-medium":{input:4.21,output:12.63},"siliconflow-cn/ByteDance-Seed/Seed-OSS-36B-Instruct":{input:.21,output:.57},"siliconflow-cn/tencent/Hunyuan-A13B-Instruct":{input:.14,output:.57},"siliconflow-cn/Qwen/Qwen3.5-27B":{input:.26,output:2.09},"siliconflow-cn/Qwen/Qwen3.6-35B-A3B":{input:.23,output:1.86},"siliconflow-cn/Qwen/Qwen3-235B-A22B-Thinking-2507":{input:.13,output:.6},"siliconflow-cn/Qwen/Qwen3-14B":{input:.07,output:.28},"siliconflow-cn/Qwen/Qwen3-8B":{input:.06,output:.06},"siliconflow-cn/Qwen/Qwen3-32B":{input:.14,output:.57},"siliconflow-cn/Qwen/Qwen3.5-35B-A3B":{input:.23,output:1.86},"siliconflow-cn/Qwen/Qwen3.5-122B-A10B":{input:.29,output:2.32},"siliconflow-cn/Qwen/Qwen3.5-9B":{input:.22,output:1.74},"siliconflow-cn/Qwen/Qwen3.5-397B-A17B":{input:.29,output:1.74},"siliconflow-cn/Qwen/Qwen3-Coder-480B-A35B-Instruct":{input:.25,output:1},"siliconflow-cn/Qwen/Qwen3-VL-32B-Instruct":{input:.2,output:.6},"siliconflow-cn/Qwen/Qwen2.5-7B-Instruct":{input:.05,output:.05},"siliconflow-cn/Qwen/Qwen3-Coder-30B-A3B-Instruct":{input:.07,output:.28},"siliconflow-cn/Qwen/Qwen2.5-72B-Instruct":{input:.59,output:.59},"siliconflow-cn/Qwen/Qwen3-VL-30B-A3B-Thinking":{input:.29,output:1},"siliconflow-cn/Qwen/Qwen3-30B-A3B-Instruct-2507":{input:.09,output:.3},"siliconflow-cn/Qwen/Qwen3-VL-32B-Thinking":{input:.2,output:1.5},"siliconflow-cn/Qwen/Qwen3-VL-8B-Instruct":{input:.18,output:.68},"siliconflow-cn/Qwen/Qwen3-VL-30B-A3B-Instruct":{input:.29,output:1},"siliconflow-cn/deepseek-ai/DeepSeek-R1":{input:.5,output:2.18},"siliconflow-cn/deepseek-ai/DeepSeek-V4-Flash":{input:.14,output:.28,cache_read:.003},"siliconflow-cn/deepseek-ai/DeepSeek-V4-Pro":{input:1.74,output:3.48,cache_read:.145},"siliconflow-cn/deepseek-ai/DeepSeek-V3.2":{input:.27,output:.42},"siliconflow-cn/deepseek-ai/DeepSeek-V3.1-Terminus":{input:.27,output:1},"siliconflow-cn/deepseek-ai/DeepSeek-V3":{input:.25,output:1},"siliconflow-cn/stepfun-ai/Step-3.5-Flash":{input:.1,output:.3},"siliconflow-cn/inclusionAI/Ling-flash-2.0":{input:.14,output:.57},"siliconflow-cn/zai-org/GLM-5.2":{input:1.4,output:4.4,cache_read:.26,cache_write:0},"siliconflow-cn/zai-org/GLM-4.5-Air":{input:.14,output:.86},"siliconflow-cn/Pro/deepseek-ai/DeepSeek-R1":{input:.5,output:2.18},"siliconflow-cn/Pro/deepseek-ai/DeepSeek-V3.2":{input:.27,output:.42},"siliconflow-cn/Pro/deepseek-ai/DeepSeek-V3":{input:.25,output:1},"siliconflow-cn/Pro/deepseek-ai/DeepSeek-V3.1-Terminus":{input:.27,output:1},"siliconflow-cn/Pro/MiniMaxAI/MiniMax-M2.5":{input:.3,output:1.22},"siliconflow-cn/Pro/moonshotai/Kimi-K2.6":{input:.95,output:4,cache_read:.16},"siliconflow-cn/Pro/moonshotai/Kimi-K2.5":{input:.45,output:2.25,cache_read:.07},"siliconflow-cn/Pro/zai-org/GLM-5.1":{input:1.4,output:4.4,cache_read:.26,cache_write:0},"siliconflow-cn/Pro/zai-org/GLM-5":{input:1,output:3.2},"regolo-ai/qwen3.8-27b":{input:.58,output:2.42},"regolo-ai/qwen3.5-122b":{input:.9,output:3.6},"regolo-ai/qwen3-coder-next":{input:.3,output:1.2},"regolo-ai/apertus-70b":{input:.46,output:2.42},"regolo-ai/glm5.2":{input:2.31,output:6},"regolo-ai/qwen3-reranker-4b":{input:.12,output:.12},"regolo-ai/llama-3.3-70b-instruct":{input:.6,output:2.7},"regolo-ai/gemma4-31b":{input:.46,output:2.42},"regolo-ai/brick-complexity-pro":{input:.12,output:.46},"regolo-ai/gpt-oss-20b":{input:.4,output:1.8},"regolo-ai/qwen3.5-9b":{input:.15,output:.6},"regolo-ai/qwen3-embedding-8b":{input:.1,output:.1},"regolo-ai/mistral-small-4-119b":{input:.75,output:3},"regolo-ai/qwen-image":{input:.5,output:2},"regolo-ai/gpt-oss-120b":{input:1,output:4.2},"inceptron/deepseek-ai/DeepSeek-V4-Flash-0731":{input:.13,output:.28,cache_read:.03,cache_write:0},"inceptron/moonshotai/Kimi-K2.6":{input:.53,output:3.39,cache_read:.17,cache_write:0},"inceptron/moonshotai/Kimi-K2.7-Code":{input:.66,output:3.4,cache_read:.18,cache_write:0},"inceptron/zai-org/GLM-5.2":{input:.71,output:2.35,cache_read:.12,cache_write:0},"upstage/solar-pro4":{input:.3,output:1.2,cache_read:.06},"upstage/solar-pro3":{input:.25,output:.25},"upstage/solar-mini":{input:.15,output:.15},"upstage/solar-pro2":{input:.25,output:.25},"vultr/XiaomiMiMo/MiMo-V2.5-Pro":{input:.55,output:1.65},"vultr/Qwen/Qwen3.5-397B-A17B":{input:.3,output:2},"vultr/Qwen/Qwen3.6-27B":{input:.3,output:2},"vultr/deepseek-ai/DeepSeek-V4-Flash":{input:.3,output:1},"vultr/MiniMaxAI/MiniMax-M2.7":{input:.3,output:1.2},"vultr/moonshotai/Kimi-K2.6":{input:.3,output:1.2},"vultr/zai-org/GLM-5.2-FP8":{input:.85,output:3.1},"vultr/nvidia/DeepSeek-V3.2-NVFP4":{input:.55,output:1.65},"vultr/nvidia/Nemotron-3-Nano-Omni-30B-A3B-Reasoning-BF16":{input:.13,output:.38},"vultr/nvidia/Nemotron-Cascade-2-30B-A3B":{input:.15,output:.6},"huggingface/tencent/Hy3":{input:.14,output:.58},"huggingface/tencent/Hy4-preview":{input:.834,output:2.501},"huggingface/meta-llama/Llama-3.1-8B-Instruct":{input:.06,output:.06},"huggingface/meta-llama/Llama-3.3-70B-Instruct":{input:.59,output:.79},"huggingface/XiaomiMiMo/MiMo-V2-Flash":{input:.1,output:.3},"huggingface/XiaomiMiMo/MiMo-V2.5-Pro":{input:1,output:3},"huggingface/XiaomiMiMo/MiMo-V2.5":{input:.4,output:2},"huggingface/thinkingmachines/Inkling-Small":{input:.5,output:1.2},"huggingface/thinkingmachines/Inkling":{input:1,output:4.05},"huggingface/google/gemma-3-27b-it":{input:.08,output:.16},"huggingface/google/gemma-3-12b-it":{input:.05,output:.15},"huggingface/google/gemma-3-4b-it":{input:.05,output:.1},"huggingface/google/gemma-4-31B-it":{input:.14,output:.4},"huggingface/google/gemma-4-26B-A4B-it":{input:.13,output:.4},"huggingface/Qwen/Qwen3-VL-235B-A22B-Instruct":{input:.3,output:1.5},"huggingface/Qwen/Qwen3.8-27B":{input:.4,output:3},"huggingface/Qwen/Qwen3-Next-80B-A3B-Instruct":{input:.25,output:1},"huggingface/Qwen/Qwen2.5-Coder-32B-Instruct":{input:.06,output:.2},"huggingface/Qwen/Qwen3-Coder-Next":{input:.2,output:1.5},"huggingface/Qwen/Qwen3-VL-235B-A22B-Thinking":{input:.98,output:3.95},"huggingface/Qwen/Qwen3.5-27B":{input:.3,output:2.4},"huggingface/Qwen/Qwen3-Next-80B-A3B-Thinking":{input:.3,output:2},"huggingface/Qwen/Qwen3.6-35B-A3B":{input:.15,output:.95},"huggingface/Qwen/Qwen3-235B-A22B-Thinking-2507":{input:.3,output:3},"huggingface/Qwen/Qwen3-235B-A22B-Instruct-2507":{input:.855,output:2.565},"huggingface/Qwen/Qwen3-235B-A22B":{input:.2,output:.8},"huggingface/Qwen/Qwen3-32B":{input:.29,output:.59},"huggingface/Qwen/Qwen3-Coder-30B-A3B-Instruct":{input:.07,output:.26},"huggingface/Qwen/Qwen3-Embedding-8B":{input:.01,output:0},"huggingface/Qwen/Qwen3.5-35B-A3B":{input:.25,output:2},"huggingface/Qwen/Qwen3.5-122B-A10B":{input:.4,output:3.2},"huggingface/Qwen/Qwen3.5-9B":{input:.17,output:.25},"huggingface/Qwen/Qwen3.5-397B-A17B":{input:.6,output:3.6},"huggingface/Qwen/Qwen3-Embedding-4B":{input:.01,output:0},"huggingface/Qwen/Qwen3.8-2.4T-A95B":{input:2.5,output:6.25},"huggingface/Qwen/Qwen3-30B-A3B":{input:.12,output:.5},"huggingface/Qwen/Qwen3-Coder-480B-A35B-Instruct":{input:2,output:2},"huggingface/Qwen/Qwen3.6-27B":{input:.47,output:3.19},"huggingface/deepseek-ai/DeepSeek-V3.1":{input:.27,output:1},"huggingface/deepseek-ai/DeepSeek-V4-Flash-0731":{input:.14,output:.28},"huggingface/deepseek-ai/DeepSeek-R1":{input:.7,output:2.5},"huggingface/deepseek-ai/DeepSeek-V4-Pro-0813":{input:1.32,output:3.96},"huggingface/deepseek-ai/DeepSeek-V4.1-Flash":{input:.3,output:1.2},"huggingface/deepseek-ai/DeepSeek-V4-Flash":{input:.14,output:.28},"huggingface/deepseek-ai/DeepSeek-V4-Pro":{input:.435,output:.87,cache_read:.003625},"huggingface/deepseek-ai/DeepSeek-V3.2":{input:.28,output:.4},"huggingface/deepseek-ai/DeepSeek-R1-0528":{input:3,output:5},"huggingface/deepseek-ai/DeepSeek-V3":{input:.4,output:1.3},"huggingface/deepseek-ai/DeepSeek-V3-0324":{input:.27,output:1.12},"huggingface/deepseek-ai/DeepSeek-V4-Flash-Vision-Exp":{input:.44,output:1.32},"huggingface/stepfun-ai/Step-3.7-Flash":{input:.2,output:1.15},"huggingface/stepfun-ai/Step-3.5-Flash":{input:.1,output:.3},"huggingface/MiniMaxAI/MiniMax-M3":{input:.3,output:1.2},"huggingface/MiniMaxAI/MiniMax-M2.1":{input:.3,output:1.2},"huggingface/MiniMaxAI/MiniMax-M2.5":{input:.3,output:1.2,cache_read:.03},"huggingface/MiniMaxAI/MiniMax-M2.7":{input:.3,output:1.2,cache_read:.06},"huggingface/MiniMaxAI/MiniMax-M2":{input:.3,output:1.2},"huggingface/moonshotai/Kimi-K2.6":{input:.95,output:4,cache_read:.16},"huggingface/moonshotai/Kimi-K3":{input:3,output:15},"huggingface/moonshotai/Kimi-K2-Instruct":{input:1,output:3},"huggingface/moonshotai/Kimi-K2.7-Code":{input:.95,output:4},"huggingface/moonshotai/Kimi-K2.5":{input:.6,output:3,cache_read:.1},"huggingface/moonshotai/Kimi-K2-Thinking":{input:.6,output:2.5,cache_read:.15},"huggingface/moonshotai/Kimi-K2-Instruct-0905":{input:1,output:3},"huggingface/zai-org/GLM-4.6V-Flash":{input:.3,output:.9},"huggingface/zai-org/GLM-5.1":{input:1,output:3.2,cache_read:.2},"huggingface/zai-org/GLM-5.2":{input:1.4,output:4.4},"huggingface/zai-org/GLM-4.5-Air":{input:.13,output:.85},"huggingface/zai-org/GLM-4.7":{input:.6,output:2.2,cache_read:.11},"huggingface/zai-org/GLM-5":{input:1,output:3.2,cache_read:.2},"huggingface/zai-org/GLM-5.3-Flash":{input:.15,output:.5},"huggingface/zai-org/GLM-4.5V":{input:.6,output:1.8},"huggingface/zai-org/GLM-4.6":{input:.55,output:2.2},"huggingface/zai-org/GLM-5.3":{input:1.4,output:4.4},"huggingface/zai-org/GLM-4.5":{input:.6,output:2.2},"huggingface/openai/gpt-oss-20b":{input:.1,output:.5},"huggingface/openai/gpt-oss-120b":{input:.25,output:.69},"volcengine/glm-5-3-flash-260828":{input:.11875,output:.41563,cache_read:.03414},"volcengine/doubao-seed-1-6-251015":{input:.11875,output:1.18747,cache_read:.02375,tiers:[{input:.17812,output:2.37494,cache_read:.02375,tier:{type:"context",size:32e3}},{input:.35624,output:3.56241,cache_read:.02375,tier:{type:"context",size:128e3}}]},"volcengine/doubao-seed-2-0-pro-260215":{input:.47499,output:2.37494,cache_read:.095,tiers:[{input:.71248,output:3.56241,cache_read:.1425,tier:{type:"context",size:32e3}},{input:1.42496,output:7.12482,cache_read:.28499,tier:{type:"context",size:128e3}}]},"volcengine/doubao-seed-2-0-lite-260428":{input:.08906,output:.53436,cache_read:.01781,tiers:[{input:.13359,output:.80154,cache_read:.02672,tier:{type:"context",size:32e3}},{input:.26718,output:1.60308,cache_read:.05344,tier:{type:"context",size:128e3}}]},"volcengine/doubao-seed-2-1-pro-260628":{input:.8906,output:4.45301,cache_read:.17812},"volcengine/doubao-seed-1-6-vision-250815":{input:.11875,output:1.18747,cache_read:.02375,tiers:[{input:.17812,output:2.37494,cache_read:.02375,tier:{type:"context",size:32e3}},{input:.35624,output:3.56241,cache_read:.02375,tier:{type:"context",size:128e3}}]},"volcengine/doubao-seed-2-0-mini-260428":{input:.02969,output:.29687,cache_read:.00594,tiers:[{input:.05937,output:.59374,cache_read:.01187,tier:{type:"context",size:32e3}},{input:.11875,output:1.18747,cache_read:.02375,tier:{type:"context",size:128e3}}]},"volcengine/doubao-seed-2-0-code-preview-260215":{input:.47499,output:2.37494,cache_read:.095,tiers:[{input:.71248,output:3.56241,cache_read:.1425,tier:{type:"context",size:32e3}},{input:1.42496,output:7.12482,cache_read:.28499,tier:{type:"context",size:128e3}}]},"volcengine/doubao-seed-2-1-turbo-260628":{input:.4453,output:2.22651,cache_read:.08906},"volcengine/glm-5-2-260617":{input:1.18747,output:4.15615,cache_read:.29687},"volcengine/doubao-seed-1-8-251228":{input:.11875,output:1.18747,cache_read:.02375,tiers:[{input:.17812,output:2.37494,cache_read:.02375,tier:{type:"context",size:32e3}},{input:.35624,output:3.56241,cache_read:.02375,tier:{type:"context",size:128e3}}]},"volcengine/doubao-seed-evolving":{input:.8906,output:4.45301,cache_read:.17812},"volcengine/doubao-seed-1-6-flash-250828":{input:.02227,output:.22265,cache_read:.00445,tiers:[{input:.04453,output:.4453,cache_read:.00445,tier:{type:"context",size:32e3}},{input:.08906,output:.8906,cache_read:.00445,tier:{type:"context",size:128e3}}]},"volcengine/doubao-seed-character-260628":{input:.11875,output:.29687,cache_read:.02375,tiers:[{input:.17812,output:.8906,cache_read:.02375,tier:{type:"context",size:32e3}}]},"volcengine/deepseek-v4-pro-ga-260813":{input:1.3359,output:4.00771,cache_read:.04453},"volcengine/deepseek-v4-flash-ga-260731":{input:.4453,output:1.3359,cache_read:.01484},"impossibl/cerebras/gpt-oss-120b":{input:.35,output:.75},"impossibl/groq/gpt-oss-20b":{input:.075,output:.3,cache_read:.0375},"impossibl/groq/gpt-oss-120b":{input:.15,output:.6,cache_read:.075},"impossibl/zai/glm-4.5":{input:.6,output:2.2,cache_read:.11},"impossibl/zai/glm-4.6":{input:.6,output:2.2,cache_read:.11},"impossibl/zai/glm-5":{input:1,output:3.2,cache_read:.2},"impossibl/zai/glm-4.7":{input:.6,output:2.2,cache_read:.11},"impossibl/zai/glm-5.2":{input:1.4,output:4.4,cache_read:.26},"impossibl/zai/glm-5.1":{input:1.4,output:4.4,cache_read:.26},"impossibl/zai/glm-5-turbo":{input:1.2,output:4,cache_read:.24},"impossibl/zai/glm-4.5-air":{input:.2,output:1.1,cache_read:.03},"impossibl/anthropic/claude-haiku-4-5":{input:1,output:5,cache_read:.1,cache_write:1.25},"impossibl/anthropic/claude-opus-4-5":{input:5,output:25,cache_read:.5,cache_write:6.25},"impossibl/anthropic/claude-sonnet-4-5":{input:3,output:15,cache_read:.3,cache_write:3.75},"impossibl/anthropic/claude-fable-5":{input:10,output:50,cache_read:1,cache_write:12.5},"impossibl/anthropic/claude-opus-4-8":{input:5,output:25,cache_read:.5,cache_write:6.25},"impossibl/anthropic/claude-sonnet-5":{input:2,output:10,cache_read:.2,cache_write:2.5},"impossibl/anthropic/claude-opus-4-6":{input:5,output:25,cache_read:.5,cache_write:6.25},"impossibl/anthropic/claude-sonnet-4-6":{input:3,output:15,cache_read:.3,cache_write:3.75},"impossibl/anthropic/claude-opus-4-7":{input:5,output:25,cache_read:.5,cache_write:6.25},"impossibl/deepseek/deepseek-v4-pro":{input:1.74,output:3.48,cache_read:.145},"impossibl/deepseek/deepseek-v4-flash":{input:.19,output:.51,cache_read:.028},"impossibl/thinkingmachines/inkling":{input:1.87,output:4.68,cache_read:.374},"impossibl/google/gemini-3.6-flash":{input:1.5,output:7.5,cache_read:.15},"impossibl/google/gemini-3.5-flash-lite":{input:.3,output:2.5,cache_read:.03},"impossibl/google/gemini-3.1-pro-preview":{input:2,output:12,cache_read:.2,tiers:[{input:4,output:18,cache_read:.4,tier:{type:"context",size:2e5}}],context_over_200k:{input:4,output:18,cache_read:.4}},"impossibl/google/gemini-3.5-flash":{input:1.5,output:9,cache_read:.15},"impossibl/google/gemini-2.5-pro":{input:1.25,output:10,cache_read:.125,tiers:[{input:2.5,output:15,cache_read:.25,tier:{type:"context",size:2e5}}],context_over_200k:{input:2.5,output:15,cache_read:.25}},"impossibl/google/gemini-2.5-flash":{input:.3,output:2.5,cache_read:.03},"impossibl/google/gemini-2.5-flash-lite":{input:.1,output:.4,cache_read:.01},"impossibl/google/gemini-3.1-flash-lite":{input:.25,output:1.5,cache_read:.025},"impossibl/xai/grok-4.3":{input:1.25,output:2.5,cache_read:.2},"impossibl/xai/grok-4.20-0309-reasoning":{input:1.25,output:2.5,cache_read:.2},"impossibl/xai/grok-4.5":{input:2,output:6,cache_read:.3},"impossibl/xai/grok-4.20-0309-non-reasoning":{input:1.25,output:2.5,cache_read:.2},"impossibl/xai/grok-build-0.1":{input:1,output:2,cache_read:.2},"impossibl/fireworks/gpt-oss-20b":{input:.07,output:.3,cache_read:.035},"impossibl/fireworks/glm-5.2":{input:1.4,output:4.4,cache_read:.14},"impossibl/fireworks/gpt-oss-120b":{input:.15,output:.6,cache_read:.015},"impossibl/moonshotai/kimi-k3":{input:3,output:15,cache_read:.3},"impossibl/xiaomi/mimo-v2.5":{input:.14,output:.28,cache_read:.003},"impossibl/qwen/qwen3.7-max":{input:2.5,output:7.5,cache_read:.5},"impossibl/qwen/qwen3.8-max-preview":{input:2.5,output:7.5},"impossibl/qwen/qwen3.6-flash":{input:.25,output:1.5,cache_read:.05,tiers:[{input:1,output:4,cache_read:.2,tier:{type:"context",size:262144}}],context_over_200k:{input:1,output:4,cache_read:.2}},"impossibl/qwen/qwen3.7-plus":{input:.4,output:1.6,cache_read:.08,tiers:[{input:1.2,output:4.8,cache_read:.24,tier:{type:"context",size:262144}}],context_over_200k:{input:1.2,output:4.8,cache_read:.24}},"impossibl/openai/gpt-5.4":{input:2.5,output:15,cache_read:.25,tiers:[{input:5,output:22.5,cache_read:.5,tier:{type:"context",size:272e3}}],context_over_200k:{input:5,output:22.5,cache_read:.5}},"impossibl/openai/gpt-5.4-pro":{input:30,output:180,cache_read:3,tiers:[{input:60,output:270,cache_read:3,tier:{type:"context",size:272e3}}],context_over_200k:{input:60,output:270,cache_read:3}},"impossibl/openai/gpt-3.5-turbo":{input:.5,output:1.5},"impossibl/openai/gpt-5.5-pro":{input:30,output:180,cache_read:3,tiers:[{input:60,output:270,cache_read:3,tier:{type:"context",size:272e3}}],context_over_200k:{input:60,output:270,cache_read:3}},"impossibl/openai/gpt-5.4-nano":{input:.2,output:1.25,cache_read:.02},"impossibl/openai/gpt-5.2-codex":{input:1.75,output:14,cache_read:.175},"impossibl/openai/gpt-5.1-codex":{input:1.25,output:10,cache_read:.125},"impossibl/openai/gpt-4o":{input:2.5,output:10,cache_read:1.25},"impossibl/openai/gpt-5-codex":{input:1.25,output:10,cache_read:.125},"impossibl/openai/gpt-5-mini":{input:.25,output:2,cache_read:.025},"impossibl/openai/o4-mini":{input:1.1,output:4.4,cache_read:.275},"impossibl/openai/o3-mini":{input:1.1,output:4.4,cache_read:.55},"impossibl/openai/gpt-5.3-codex":{input:1.75,output:14,cache_read:.175},"impossibl/openai/gpt-4.1-nano":{input:.1,output:.4,cache_read:.025},"impossibl/openai/gpt-5-nano":{input:.05,output:.4,cache_read:.005},"impossibl/openai/o1":{input:15,output:60,cache_read:7.5},"impossibl/openai/gpt-5-pro":{input:15,output:120},"impossibl/openai/gpt-5.1":{input:1.25,output:10,cache_read:.125},"impossibl/openai/gpt-4o-mini":{input:.15,output:.6,cache_read:.075},"impossibl/openai/gpt-5.4-mini":{input:.75,output:4.5,cache_read:.075},"impossibl/openai/gpt-5.6-luna":{input:.2,output:1.2,cache_read:.02,cache_write:.25,tiers:[{input:.4,output:1.8,cache_read:.04,cache_write:.5,tier:{type:"context",size:272e3}}],context_over_200k:{input:.4,output:1.8,cache_read:.04,cache_write:.5}},"impossibl/openai/gpt-5.2":{input:1.75,output:14,cache_read:.175},"impossibl/openai/gpt-5.5":{input:5,output:30,cache_read:.5,tiers:[{input:10,output:45,cache_read:1,tier:{type:"context",size:272e3}}],context_over_200k:{input:10,output:45,cache_read:1}},"impossibl/openai/gpt-4.1":{input:2,output:8,cache_read:.5},"impossibl/openai/gpt-4.1-mini":{input:.4,output:1.6,cache_read:.1},"impossibl/openai/gpt-5.6-terra":{input:2,output:12,cache_read:.2,cache_write:2.5,tiers:[{input:4,output:18,cache_read:.4,cache_write:5,tier:{type:"context",size:272e3}}],context_over_200k:{input:4,output:18,cache_read:.4,cache_write:5}},"impossibl/openai/gpt-4-turbo":{input:10,output:30},"impossibl/openai/gpt-5.1-codex-mini":{input:.25,output:2,cache_read:.025},"impossibl/openai/o3":{input:2,output:8,cache_read:.5},"impossibl/openai/gpt-5":{input:1.25,output:10,cache_read:.125},"impossibl/openai/gpt-5.6-sol":{input:5,output:30,cache_read:.5,cache_write:6.25,tiers:[{input:10,output:45,cache_read:1,cache_write:12.5,tier:{type:"context",size:272e3}}],context_over_200k:{input:10,output:45,cache_read:1,cache_write:12.5}},"xpersona/gpt-5.4":{input:.75,output:6,reasoning:6,cache_read:.075},"xpersona/claude-haiku-4-5":{input:.6,output:3.7,reasoning:3.7,cache_read:.06},"xpersona/xpersona-frieren-coder":{input:1.5,output:6,reasoning:6,cache_read:.15},"xpersona/gpt-5.6":{input:1.5,output:12,reasoning:12,cache_read:.15},"xpersona/xpersona-gpt-5.5":{input:3,output:18,reasoning:18,cache_read:.3},"xpersona/gemini-3.5-flash":{input:1.55,output:12.2,reasoning:12.2,cache_read:.155},"xpersona/claude-fable-5":{input:3,output:18.5,reasoning:18.5,cache_read:.3},"xpersona/gpt-5.4-mini":{input:.375,output:4,reasoning:4,cache_read:.0375},"xpersona/claude-opus-4-8":{input:1.5,output:9.25,reasoning:9.25,cache_read:.15},"xpersona/gpt-5.5":{input:1.5,output:12,reasoning:12,cache_read:.15},"xpersona/claude-sonnet-4-6":{input:.9,output:5.55,reasoning:5.55,cache_read:.09},"xpersona/gpt-5.6-terra":{input:1.5,output:2,reasoning:2,cache_read:.15},"xpersona/gpt-5.6-sol":{input:1.5,output:12,reasoning:12,cache_read:.15},"qiniu-ai/mimo-v2-flash":{input:.1,output:.3,cache_read:.01},"qiniu-ai/xiaomi/mimo-v2-flash":{input:.1,output:.3,cache_read:.01},"google/gemini-flash-latest":{input:.75,output:3.75,cache_read:.075,input_audio:.75},"google/gemini-omni-flash-preview":{input:1.5,output:17.5},"google/gemini-3.1-flash-image-preview":{input:.5,output:60},"google/gemini-3.1-flash-tts-preview":{input:1,output:20},"google/gemini-2.5-flash-image":{input:.3,output:30,cache_read:.075},"google/gemini-flash-lite-latest":{input:.3,output:2.5,cache_read:.03},"google/gemini-embedding-2":{input:.2,output:0,input_audio:6.5},"google/gemini-3.6-flash":{input:.75,output:3.75,cache_read:.075,input_audio:.75},"google/gemini-3-pro-image-preview":{input:2,output:120},"google/gemini-2.5-pro-preview-tts":{input:1,output:20},"google/gemini-3.5-flash-lite":{input:.3,output:2.5,cache_read:.03},"google/gemini-3.1-flash-image":{input:.5,output:60},"google/gemini-3.1-pro-preview":{input:2,output:12,cache_read:.2,tiers:[{input:4,output:18,cache_read:.4,tier:{type:"context",size:2e5}}],context_over_200k:{input:4,output:18,cache_read:.4}},"google/gemini-2.5-computer-use-preview-10-2025":{input:1.25,output:10,tiers:[{input:2.5,output:15,tier:{type:"context",size:2e5}}],context_over_200k:{input:2.5,output:15}},"google/gemini-3.5-flash":{input:1.5,output:9,cache_read:.15,input_audio:1.5},"google/gemini-2.5-pro":{input:1.25,output:10,cache_read:.125,tiers:[{input:2.5,output:15,cache_read:.25,tier:{type:"context",size:2e5}}],context_over_200k:{input:2.5,output:15,cache_read:.25}},"google/gemini-3-pro-image":{input:2,output:120},"google/gemini-2.5-flash":{input:.3,output:2.5,cache_read:.03,input_audio:1},"google/gemini-2.5-flash-preview-tts":{input:.5,output:10},"google/gemini-3.1-flash-lite-image":{input:.25,output:30},"google/deep-research-preview-04-2026":{input:2,output:12,cache_read:.2,tiers:[{input:4,output:18,cache_read:.4,tier:{type:"context",size:2e5}}],context_over_200k:{input:4,output:18,cache_read:.4}},"google/deep-research-max-preview-04-2026":{input:2,output:12,cache_read:.2,tiers:[{input:4,output:18,cache_read:.4,tier:{type:"context",size:2e5}}],context_over_200k:{input:4,output:18,cache_read:.4}},"google/gemini-3.7-flash":{input:.75,output:3.75,cache_read:.075,input_audio:.75},"google/gemini-3.1-pro-preview-customtools":{input:2,output:12,cache_read:.2,tiers:[{input:4,output:18,cache_read:.4,tier:{type:"context",size:2e5}}],context_over_200k:{input:4,output:18,cache_read:.4}},"google/gemini-3-flash-preview":{input:.5,output:3,cache_read:.05,input_audio:1},"google/gemini-3.8-flash":{input:.75,output:3.75,cache_read:.075,input_audio:.75},"google/gemini-3.5-live-translate-preview":{input:3.5,output:21,input_audio:3.5,output_audio:21},"google/gemini-2.5-flash-lite":{input:.1,output:.4,cache_read:.01,input_audio:.3},"google/gemini-embedding-001":{input:.15,output:0},"google/gemini-3.1-flash-lite-preview":{input:.25,output:1.5,cache_read:.025,input_audio:.5},"google/gemini-3.1-flash-live-preview":{input:.75,output:4.5,input_audio:3,output_audio:12},"google/gemini-3.1-flash-lite":{input:.25,output:1.5,cache_read:.025,input_audio:.5},"vancine/MiniMax-M3":{input:.24,output:.96,cache_read:.048},"vancine/glm-5.3-flash":{input:.12,output:.4,cache_read:.024},"vancine/qwen3.8-max":{input:1.6,output:4.8,cache_read:.2},"vancine/kimi-k3":{input:2.4,output:12,cache_read:.24},"vancine/deepseek-v4.1-flash":{input:.24,output:.96,cache_read:.0048},"vancine/qwen3.8-flash":{input:.12,output:.38,cache_read:.013},"vancine/hy4-preview":{input:.67,output:2,cache_read:.034},"vancine/glm-5.3":{input:1.12,output:3.52,cache_read:.208},"zhipuai-coding-plan/glm-4.6v":{input:.3,output:.9},"lucidquery/lucidquery-agi-01-frontier":{input:4.5,output:22},"lucidquery/lucidquery-nexus-coder":{input:2,output:5},"lucidquery/lucidnova-rf1-100b":{input:2,output:5},"lucidquery/lucidquery-agi-01-swift":{input:2.5,output:15},"gmicloud/anthropic/claude-opus-4.6":{input:5,output:25,cache_read:.5},"gmicloud/anthropic/claude-opus-4.7":{input:4.5,output:22.5,cache_read:.45},"gmicloud/anthropic/claude-opus-4.8":{input:5,output:25,cache_read:.5},"gmicloud/anthropic/claude-sonnet-4.6":{input:3,output:15,cache_read:.3},"gmicloud/Qwen/Qwen3.7-Max":{input:2.5,output:7.5,cache_read:.25,cache_write:3.125},"gmicloud/deepseek-ai/DeepSeek-V4-Flash":{input:.112,output:.224,cache_read:.022},"gmicloud/deepseek-ai/DeepSeek-V4-Pro":{input:1.392,output:2.784,cache_read:.116},"gmicloud/MiniMaxAI/MiniMax-M3":{input:.6,output:2.4,cache_read:.12,tiers:[{input:1.2,output:4.8,cache_read:.24,tier:{type:"context",size:512e3}}],context_over_200k:{input:1.2,output:4.8,cache_read:.24}},"gmicloud/MiniMaxAI/MiniMax-M2.7":{input:.3,output:1.2,cache_read:.06},"gmicloud/moonshotai/Kimi-K2.6":{input:.855,output:3.6,cache_read:.144},"gmicloud/moonshotai/kimi-k2.7-code-highspeed":{input:1.9,output:8,cache_read:.38},"gmicloud/zai-org/GLM-5.2-FP8":{input:.979,output:3.08,cache_read:.182},"gmicloud/zai-org/GLM-5-FP8":{input:.6,output:1.92,cache_read:.12},"gmicloud/zai-org/GLM-5.1-FP8":{input:.98,output:3.08,cache_read:.182},"gmicloud/openai/gpt-5.5":{input:5,output:30,cache_read:.5},"oci/xai.grok-4.3":{input:1.25,output:2.5,cache_read:.2,tiers:[{input:2.5,output:5,cache_read:.4,tier:{type:"context",size:2e5}}],context_over_200k:{input:2.5,output:5,cache_read:.4}},"oci/xai.grok-4.20-non-reasoning":{input:1.25,output:2.5,cache_read:.2,tiers:[{input:2.5,output:5,cache_read:.4,tier:{type:"context",size:2e5}}],context_over_200k:{input:2.5,output:5,cache_read:.4}},"oci/meta.llama-3.3-70b-instruct":{input:.72,output:.72},"oci/meta.llama-4-scout-17b-16e-instruct":{input:.72,output:.72},"oci/xai.grok-4.6":{input:2,output:6,cache_read:.5,tiers:[{input:4,output:12,cache_read:1,tier:{type:"context",size:2e5}}],context_over_200k:{input:4,output:12,cache_read:1}},"oci/meta.llama-4-maverick-17b-128e-instruct-fp8":{input:.72,output:.72},"oci/openai.gpt-oss-120b":{input:.15,output:.6},"oci/openai.gpt-oss-20b":{input:.07,output:.3},"oci/xai.grok-4.20-reasoning":{input:1.25,output:2.5,cache_read:.2,tiers:[{input:2.5,output:5,cache_read:.4,tier:{type:"context",size:2e5}}],context_over_200k:{input:2.5,output:5,cache_read:.4}},"cloudflare-ai-gateway/anthropic/claude-opus-4.5":{input:5,output:25,cache_read:.5,cache_write:6.25},"cloudflare-ai-gateway/anthropic/claude-opus-4.6":{input:5,output:25,cache_read:.5,cache_write:6.25},"cloudflare-ai-gateway/anthropic/claude-opus-4.7":{input:5,output:25,cache_read:.5,cache_write:6.25},"cloudflare-ai-gateway/anthropic/claude-opus-4.8":{input:5,output:25,cache_read:.5,cache_write:6.25},"cloudflare-ai-gateway/anthropic/claude-haiku-4.5":{input:1,output:5,cache_read:.1,cache_write:1.25},"cloudflare-ai-gateway/anthropic/claude-opus-5":{input:5,output:25,cache_read:.5,cache_write:6.25},"cloudflare-ai-gateway/anthropic/claude-fable-5.1":{input:10,output:50,cache_read:.25,cache_write:12.5},"cloudflare-ai-gateway/anthropic/claude-sonnet-4.5":{input:3,output:15,cache_read:.3,cache_write:3.75},"cloudflare-ai-gateway/anthropic/claude-fable-5":{input:10,output:50,cache_read:1,cache_write:12.5},"cloudflare-ai-gateway/anthropic/claude-sonnet-5":{input:2,output:10,cache_read:.2,cache_write:2.5},"cloudflare-ai-gateway/anthropic/claude-sonnet-4.6":{input:3,output:15,cache_read:.3,cache_write:3.75},"cloudflare-ai-gateway/anthropic/claude-opus-5.5":{input:4,output:20,cache_read:.2,cache_write:5},"cloudflare-ai-gateway/deepseek/deepseek-v4-pro":{input:1.74,output:3.48,cache_read:.145},"cloudflare-ai-gateway/unbiased/pareto":{input:2.5,output:7.5,cache_read:.25},"cloudflare-ai-gateway/alibaba/qwen3.7-max":{input:1.25,output:3.75,cache_read:.25},"cloudflare-ai-gateway/alibaba/qwen3.8-max":{input:2,output:6,cache_read:.25},"cloudflare-ai-gateway/alibaba/qwen3-max":{input:1.2,output:6},"cloudflare-ai-gateway/alibaba/qwen3.5-397b-a17b":{input:.6,output:3.6},"cloudflare-ai-gateway/alibaba/qwen3.7-plus":{input:.32,output:1.28,cache_read:.064},"cloudflare-ai-gateway/xai/grok-4.7":{input:2,output:6,cache_read:.5,tiers:[{input:4,output:12,cache_read:1,tier:{type:"context",size:2e5}}],context_over_200k:{input:4,output:12,cache_read:1}},"cloudflare-ai-gateway/xai/grok-4.3":{input:1.25,output:2.5,cache_read:.2},"cloudflare-ai-gateway/xai/grok-4.20-0309-reasoning":{input:2,output:6,cache_read:.2},"cloudflare-ai-gateway/xai/grok-4.5":{input:2,output:6,cache_read:.3,tiers:[{input:4,output:12,cache_read:.6,tier:{type:"context",size:2e5}}],context_over_200k:{input:4,output:12,cache_read:.6}},"cloudflare-ai-gateway/xai/grok-4.20-0309-non-reasoning":{input:2,output:6,cache_read:.2},"cloudflare-ai-gateway/xai/grok-4.6":{input:2,output:6,cache_read:.5,tiers:[{input:4,output:12,cache_read:1,tier:{type:"context",size:2e5}}],context_over_200k:{input:4,output:12,cache_read:1}},"cloudflare-ai-gateway/moonshotai/kimi-k3":{input:3,output:15,cache_read:.3},"cloudflare-ai-gateway/openai/gpt-5.4":{input:2.5,output:15,cache_read:.25},"cloudflare-ai-gateway/openai/gpt-5.4-pro":{input:30,output:180},"cloudflare-ai-gateway/openai/gpt-5.5-pro":{input:30,output:180},"cloudflare-ai-gateway/openai/gpt-5.4-nano":{input:.2,output:1.25,cache_read:.02},"cloudflare-ai-gateway/openai/gpt-4o":{input:1.25,output:5,cache_read:.625},"cloudflare-ai-gateway/openai/gpt-5-mini":{input:.25,output:2,cache_read:.025},"cloudflare-ai-gateway/openai/o4-mini":{input:1.1,output:4.4,cache_read:.275},"cloudflare-ai-gateway/openai/o3-mini":{input:1.1,output:4.4,cache_read:.55},"cloudflare-ai-gateway/openai/gpt-4.1-nano":{input:.1,output:.4,cache_read:.025},"cloudflare-ai-gateway/openai/gpt-5-nano":{input:.05,output:.4,cache_read:.005},"cloudflare-ai-gateway/openai/gpt-6-astra":{input:10,output:50,cache_read:1,cache_write:12,tiers:[{input:20,output:75,cache_read:2,cache_write:25,tier:{type:"context",size:272e3}}],context_over_200k:{input:20,output:75,cache_read:2,cache_write:25}},"cloudflare-ai-gateway/openai/gpt-5.1":{input:1.25,output:10,cache_read:.125},"cloudflare-ai-gateway/openai/gpt-4o-mini":{input:.075,output:.3,cache_read:.0375},"cloudflare-ai-gateway/openai/gpt-5.4-mini":{input:.75,output:4.5,cache_read:.075},"cloudflare-ai-gateway/openai/gpt-5.6-luna":{input:.2,output:1.2,cache_read:.02,cache_write:.25},"cloudflare-ai-gateway/openai/gpt-5.5":{input:5,output:30},"cloudflare-ai-gateway/openai/gpt-4.1":{input:2,output:8,cache_read:.5},"cloudflare-ai-gateway/openai/gpt-4.1-mini":{input:.4,output:1.6,cache_read:.1},"cloudflare-ai-gateway/openai/gpt-6-luna":{input:.1,output:.5,cache_read:.01,cache_write:.125,tiers:[{input:.2,output:.75,cache_read:.02,cache_write:.25,tier:{type:"context",size:272e3}}],context_over_200k:{input:.2,output:.75,cache_read:.02,cache_write:.25}},"cloudflare-ai-gateway/openai/gpt-5.6-terra":{input:2,output:12,cache_read:.2,cache_write:2.5},"cloudflare-ai-gateway/openai/o3":{input:2,output:8,cache_read:.5},"cloudflare-ai-gateway/openai/gpt-5":{input:1.25,output:10,cache_read:.125},"cloudflare-ai-gateway/openai/gpt-5.6-sol":{input:2,output:10,cache_read:.25,cache_write:3.125},"cloudflare-ai-gateway/openai/gpt-6-sol":{input:2,output:10,cache_read:.2,cache_write:2.5,tiers:[{input:4,output:15,cache_read:.4,cache_write:5,tier:{type:"context",size:272e3}}],context_over_200k:{input:4,output:15,cache_read:.4,cache_write:5}},"clarifai/minimaxai/chat-completion/models/MiniMax-M2_5-high-throughput":{input:.3,output:1.2},"clarifai/clarifai/main/models/mm-poly-8b":{input:.658,output:1.11},"clarifai/deepseek-ai/deepseek-ocr/models/DeepSeek-OCR":{input:.2,output:.7},"clarifai/mistralai/completion/models/Ministral-3-3B-Reasoning-2512":{input:1.039,output:.54825},"clarifai/mistralai/completion/models/Ministral-3-14B-Reasoning-2512":{input:2.5,output:1.7},"clarifai/moonshotai/chat-completion/models/Kimi-K2_6":{input:.95,output:4},"clarifai/arcee_ai/AFM/models/trinity-mini":{input:.045,output:.15},"clarifai/qwen/qwenCoder/models/Qwen3-Coder-30B-A3B-Instruct":{input:.11458,output:.74812},"clarifai/qwen/qwenLM/models/Qwen3-30B-A3B-Instruct-2507":{input:.3,output:.5},"clarifai/qwen/qwenLM/models/Qwen3-30B-A3B-Thinking-2507":{input:.36,output:1.3},"clarifai/openai/chat-completion/models/gpt-oss-120b-high-throughput":{input:.09,output:.36},"clarifai/openai/chat-completion/models/gpt-oss-20b":{input:.045,output:.18},"aiand/motif-technologies/motif-3":{input:.5,output:2,cache_read:.2},"aiand/google/gemma-4-31b-it":{input:.2,output:.5,cache_read:.05},"aiand/deepseek-ai/deepseek-v4-pro":{input:1,output:2.5,cache_read:.25},"aiand/deepseek-ai/deepseek-v4-flash":{input:.15,output:.25,cache_read:.08},"aiand/moonshotai/kimi-k3":{input:3,output:12.5,cache_read:.5},"aiand/moonshotai/kimi-k2.7-code":{input:.75,output:3.5,cache_read:.2},"aiand/zai-org/glm-5.2":{input:1,output:4,cache_read:.3},"aiand/zai-org/glm-5.3":{input:1,output:4,cache_read:.3},"aiand/qwen/qwen3.8-27b":{input:.4,output:3,cache_read:.2},"aiand/qwen/qwen3.6-27b":{input:.32,output:3.2,cache_read:.2},"aiand/openai/gpt-oss-120b":{input:.15,output:.6,cache_read:.08},"frogbot/grok-4-1-fast-reasoning":{input:.2,output:.5,cache_read:.05},"frogbot/gpt-5-4-mini":{input:.75,output:4.5,cache_read:.075},"frogbot/claude-haiku-4-5":{input:1,output:5,cache_read:.1,cache_write:1.25},"frogbot/grok-4-1-fast-non-reasoning":{input:.2,output:.5,cache_read:.05},"frogbot/gpt-4o":{input:2.5,output:10,cache_read:1.25},"frogbot/minimax-m2-5":{input:.3,output:1.2,cache_read:.03},"frogbot/gpt-5-4-nano":{input:.2,output:1.25,cache_read:.02},"frogbot/kimi-k2.5":{input:.6,output:3,cache_read:.1},"frogbot/gpt-oss-20b":{input:.07,output:.2},"frogbot/gemini-2.5-pro":{input:1.25,output:10,cache_read:.31},"frogbot/gemini-2.5-flash":{input:.3,output:2.5,cache_read:.075},"frogbot/minimax-m2-7":{input:.3,output:1.2,cache_read:.06},"frogbot/kimi-k2-6":{input:.95,output:4,cache_read:.16},"frogbot/grok-code-fast-1":{input:.2,output:1.5,cache_read:.02},"frogbot/qwen-3-6-plus":{input:.5,output:3,cache_read:.1},"frogbot/claude-opus-4-6":{input:5,output:25,cache_read:.5,cache_write:6.25},"frogbot/grok-4-3":{input:1.25,output:2.5,cache_read:.2},"frogbot/gpt-5-5":{input:2.5,output:15,cache_read:.25},"frogbot/gemini-3-flash-preview":{input:.5,output:3,cache_read:.05},"frogbot/gemini-3-1-pro-preview":{input:2,output:12,cache_read:.2},"frogbot/deepseek-v4-pro":{input:1.74,output:3.48,cache_read:.14},"frogbot/claude-sonnet-4-6":{input:3,output:15,cache_read:.3,cache_write:3.75},"frogbot/gpt-5-3-codex":{input:1.75,output:14,cache_read:.175},"frogbot/gpt-oss-120b":{input:.15,output:.6},"frogbot/claude-opus-4-7":{input:5,output:25,cache_read:.5,cache_write:6.25},"frogbot/zai-glm-5-1":{input:1.4,output:4.4,cache_read:.26},"stackit/google/gemma-3-27b-it":{input:.53,output:.76},"stackit/intfloat/e5-mistral-7b-instruct":{input:.02,output:.02},"stackit/Qwen/Qwen3-VL-235B-A22B-Instruct-FP8":{input:1.76,output:2.05},"stackit/Qwen/Qwen3-VL-Embedding-8B":{input:.09,output:.09},"stackit/Qwen/Qwen3.6-27B":{input:.53,output:.76},"stackit/cortecs/Llama-3.3-70B-Instruct-FP8-Dynamic":{input:.53,output:.76},"stackit/openai/gpt-oss-20b":{input:.18,output:.29},"stackit/openai/gpt-oss-120b":{input:.53,output:.76},"crusoe/zai/GLM-5.1":{input:1.2,output:4.4,cache_read:.25},"crusoe/zai/GLM-5.2":{input:1.4,output:4.4,cache_read:.26},"crusoe/meta-llama/Llama-3.3-70B-Instruct":{input:.25,output:.75,cache_read:.13},"crusoe/google/gemma-4-31b-it":{input:.14,output:.4,cache_read:.14},"crusoe/Qwen/Qwen3-235B-A22B-Instruct-2507":{input:.22,output:.8,cache_read:.11},"crusoe/deepseek-ai/DeepSeek-V3-0324":{input:.5,output:1.5,cache_read:.25},"crusoe/moonshotai/Kimi-K2.6":{input:.7,output:3.5,cache_read:.35},"crusoe/nvidia/NVIDIA-Nemotron-3-Nano-30B-A3B":{input:.05,output:.2,cache_read:.03},"crusoe/nvidia/Nemotron-3-Nano-Omni-Reasoning-30B-A3B":{input:.3,output:1.83,cache_read:.3,input_audio:.5},"crusoe/nvidia/NVIDIA-Nemotron-3-Super-120B-A12B":{input:.3,output:2.4,cache_read:.15},"crusoe/openai/gpt-oss-120b":{input:.05,output:.2,cache_read:.05},"jiekou/grok-4-1-fast-reasoning":{input:.18,output:.45},"jiekou/grok-4-1-fast-non-reasoning":{input:.18,output:.45},"jiekou/gpt-5.2-codex":{input:1.75,output:14},"jiekou/gpt-5.1-codex":{input:1.125,output:9},"jiekou/gemini-3-pro-preview":{input:1.8,output:10.8},"jiekou/gpt-5-codex":{input:1.125,output:9},"jiekou/gpt-5-mini":{input:.225,output:1.8},"jiekou/gpt-5.2-pro":{input:18.9,output:151.2},"jiekou/o4-mini":{input:1.1,output:4.4},"jiekou/o3-mini":{input:1.1,output:4.4},"jiekou/grok-4-fast-reasoning":{input:.18,output:.45},"jiekou/gpt-5-nano":{input:.045,output:.36},"jiekou/gemini-2.5-flash-lite-preview-06-17":{input:.09,output:.36},"jiekou/claude-opus-4-20250514":{input:13.5,output:67.5},"jiekou/grok-4-fast-non-reasoning":{input:.18,output:.45},"jiekou/claude-opus-4-1-20250805":{input:13.5,output:67.5},"jiekou/gpt-5-pro":{input:13.5,output:108},"jiekou/gpt-5-chat-latest":{input:1.125,output:9},"jiekou/claude-opus-4-5-20251101":{input:4.5,output:22.5},"jiekou/gpt-5.1":{input:1.125,output:9},"jiekou/gemini-2.5-pro":{input:1.125,output:9},"jiekou/gemini-2.5-flash":{input:.27,output:2.25},"jiekou/gemini-2.5-flash-preview-05-20":{input:.135,output:3.15},"jiekou/gpt-5.1-codex-max":{input:1.125,output:9},"jiekou/gpt-5.2":{input:1.575,output:12.6},"jiekou/grok-code-fast-1":{input:.18,output:1.35},"jiekou/claude-sonnet-4-5-20250929":{input:2.7,output:13.5},"jiekou/claude-opus-4-6":{input:5,output:25},"jiekou/gemini-3-flash-preview":{input:.5,output:3},"jiekou/claude-haiku-4-5-20251001":{input:.9,output:4.5},"jiekou/gemini-2.5-flash-lite-preview-09-2025":{input:.09,output:.36},"jiekou/gemini-2.5-pro-preview-06-05":{input:1.125,output:9},"jiekou/gemini-2.5-flash-lite":{input:.09,output:.36},"jiekou/claude-sonnet-4-20250514":{input:2.7,output:13.5},"jiekou/gpt-5.1-codex-mini":{input:.225,output:1.8},"jiekou/o3":{input:10,output:40},"jiekou/grok-4-0709":{input:2.7,output:13.5},"jiekou/deepseek/deepseek-v3-0324":{input:.28,output:1.14},"jiekou/deepseek/deepseek-v3.1":{input:.27,output:1},"jiekou/deepseek/deepseek-r1-0528":{input:.7,output:2.5},"jiekou/baidu/ernie-4.5-vl-424b-a47b":{input:.42,output:1.25},"jiekou/baidu/ernie-4.5-300b-a47b-paddle":{input:.28,output:1.1},"jiekou/minimaxai/minimax-m1-80k":{input:.55,output:2.2},"jiekou/moonshotai/kimi-k2.5":{input:.6,output:3},"jiekou/moonshotai/kimi-k2-instruct":{input:.57,output:2.3},"jiekou/moonshotai/kimi-k2-0905":{input:.6,output:2.5},"jiekou/zai-org/glm-4.5":{input:.6,output:2.2},"jiekou/zai-org/glm-4.5v":{input:.6,output:1.8},"jiekou/zai-org/glm-4.7-flash":{input:.07,output:.4},"jiekou/zai-org/glm-4.7":{input:.6,output:2.2},"jiekou/minimax/minimax-m2.1":{input:.3,output:1.2},"jiekou/qwen/qwen3-235b-a22b-instruct-2507":{input:.15,output:.8},"jiekou/qwen/qwen3-next-80b-a3b-thinking":{input:.15,output:1.5},"jiekou/qwen/qwen3-coder-next":{input:.2,output:1.5},"jiekou/qwen/qwen3-235b-a22b-fp8":{input:.2,output:.8},"jiekou/qwen/qwen3-coder-480b-a35b-instruct":{input:.29,output:1.2},"jiekou/qwen/qwen3-235b-a22b-thinking-2507":{input:.3,output:3},"jiekou/qwen/qwen3-30b-a3b-fp8":{input:.09,output:.45},"jiekou/qwen/qwen3-next-80b-a3b-instruct":{input:.15,output:1.5},"jiekou/qwen/qwen3-32b-fp8":{input:.1,output:.45},"ollama-cloud/glm-5.3-flash":{input:.15,output:.5,cache_read:.03},"ollama-cloud/nemotron-3-ultra":{input:.1,output:3,cache_read:.1},"ollama-cloud/kimi-k3":{input:3,output:15,cache_read:.3},"ollama-cloud/deepseek-v4.1-flash":{input:.15,output:.6,cache_read:.003},"ollama-cloud/kimi-k2.6":{input:.95,output:4,cache_read:.16},"ollama-cloud/qwen3.5:397b":{input:.6,output:3.6},"ollama-cloud/gpt-oss:20b":{input:.07,output:.3,cache_read:.035},"ollama-cloud/gpt-oss:120b":{input:.15,output:.6,cache_read:.014},"ollama-cloud/nemotron-3-nano:30b":{input:.06,output:.24},"ollama-cloud/mistral-large-3:675b":{input:.5,output:1.5},"ollama-cloud/minimax-m2.7":{input:.3,output:1.2,cache_read:.06},"ollama-cloud/deepseek-v4-pro:0813":{input:.66,output:1.98,cache_read:.022},"ollama-cloud/minimax-m3":{input:.6,output:2.4,cache_read:.12},"ollama-cloud/deepseek-v4-flash:0731":{input:.22,output:.66,cache_read:.007},"ollama-cloud/gemma4:31b":{input:.14,output:.4,cache_read:.05},"ollama-cloud/glm-5.2":{input:1.4,output:4.4,cache_read:.26},"ollama-cloud/glm-5.1":{input:1,output:3.2,cache_read:.2},"ollama-cloud/deepseek-v4-pro":{input:.66,output:1.98,cache_read:.022},"ollama-cloud/glm-5.3":{input:1.4,output:4.4,cache_read:.26},"ollama-cloud/kimi-k2.7-code":{input:.95,output:4,cache_read:.19},"ollama-cloud/nemotron-3-super":{input:.015,output:.6,cache_read:.015},"ollama-cloud/deepseek-v4-flash":{input:.22,output:.66,cache_read:.007},"tencent-tokenhub/hy4-preview":{input:.834,output:2.501,cache_read:.042},"watsonx/meta-llama/llama-4-maverick-17b-128e-instruct-fp8":{input:.371,output:1.484},"watsonx/meta-llama/llama-3-3-70b-instruct":{input:.7526,output:.7526},"watsonx/ibm/granite-4-h-small":{input:.0636,output:.265},"watsonx/mistralai/mistral-small-3-1-24b-instruct-2503":{input:.106,output:.318},"watsonx/openai/gpt-oss-120b":{input:.159,output:.636},"ambient/deepseek/deepseek-v4-flash-0731":{input:.08,output:.18,cache_read:.016,cache_write:0},"ambient/deepseek/deepseek-v4-flash":{input:.14,output:.28,cache_read:.028,cache_write:0},"ambient/z-ai/glm-5.2":{input:.6,output:2,cache_read:.15,cache_write:0},"ambient/ambient/large":{input:.6,output:2,cache_read:.15,cache_write:0},"ambient/moonshotai/kimi-k2.6":{input:.95,output:4,cache_read:.2,cache_write:0},"ambient/moonshotai/kimi-k2.7-code":{input:.69,output:3.49,cache_read:.14,cache_write:0},"ambient/zai-org/GLM-5.2-FP8":{input:1.2,output:4.2,cache_read:.26,cache_write:0},"ambient/zai-org/GLM-5.1-FP8":{input:1.4,output:4.4,cache_read:0,cache_write:0},"ambient/xiaomi/mimo-v2.5":{input:.4,output:2,cache_read:.08,cache_write:0},"ambient/stepfun/step-3.7-flash":{input:.19,output:1.14,cache_read:.03,cache_write:0},"xai/grok-4.7":{input:2,output:6,cache_read:.5,tiers:[{input:4,output:12,cache_read:1,tier:{type:"context",size:2e5}}],context_over_200k:{input:4,output:12,cache_read:1}},"xai/grok-4.3":{input:1.25,output:2.5,cache_read:.2,tiers:[{input:2.5,output:5,cache_read:.4,tier:{type:"context",size:2e5}}],context_over_200k:{input:2.5,output:5,cache_read:.4}},"xai/grok-4.20-0309-reasoning":{input:1.25,output:2.5,cache_read:.2,tiers:[{input:2.5,output:5,cache_read:.4,tier:{type:"context",size:2e5}}],context_over_200k:{input:2.5,output:5,cache_read:.4}},"xai/grok-4.5":{input:2,output:6,cache_read:.3,tiers:[{input:4,output:12,cache_read:.6,tier:{type:"context",size:2e5}}],context_over_200k:{input:4,output:12,cache_read:.6}},"xai/grok-4.20-0309-non-reasoning":{input:1.25,output:2.5,cache_read:.2,tiers:[{input:2.5,output:5,cache_read:.4,tier:{type:"context",size:2e5}}],context_over_200k:{input:2.5,output:5,cache_read:.4}},"xai/grok-build-0.1":{input:1,output:2,cache_read:.2,tiers:[{input:2,output:4,cache_read:.4,tier:{type:"context",size:2e5}}],context_over_200k:{input:2,output:4,cache_read:.4}},"xai/grok-4.20-multi-agent-0309":{input:1.25,output:2.5,cache_read:.2,tiers:[{input:2.5,output:5,cache_read:.4,tier:{type:"context",size:2e5}}],context_over_200k:{input:2.5,output:5,cache_read:.4}},"xai/grok-4.6":{input:2,output:6,cache_read:.5,tiers:[{input:4,output:12,cache_read:1,tier:{type:"context",size:2e5}}],context_over_200k:{input:4,output:12,cache_read:1}},"nebius/google/gemma-3-27b-it":{input:.1,output:.3,cache_read:.01,cache_write:.125},"nebius/Qwen/Qwen3-30B-A3B-Instruct-2507":{input:.1,output:.3,cache_read:.01,cache_write:.125},"nebius/Qwen/Qwen3-235B-A22B-Instruct-2507":{input:.2,output:.6},"nebius/Qwen/Qwen3-Embedding-8B":{input:.01,output:0},"nebius/Qwen/Qwen3.5-397B-A17B":{input:.6,output:3.6,cache_read:.06,cache_write:.75},"nebius/deepseek-ai/DeepSeek-V4-Flash-0731":{input:.14,output:.28,cache_read:.14},"nebius/deepseek-ai/DeepSeek-V4-Pro-0813":{input:1.32,output:3.96,cache_read:1.32},"nebius/deepseek-ai/DeepSeek-V4.1-Flash":{input:.3,output:1.2,cache_read:.3},"nebius/deepseek-ai/DeepSeek-V4-Pro":{input:1.75,output:3.5,cache_read:.15},"nebius/MiniMaxAI/MiniMax-M3":{input:.3,output:1.2},"nebius/moonshotai/Kimi-K3":{input:3,output:15,cache_read:3},"nebius/moonshotai/Kimi-K2.7-Code":{input:.95,output:4},"nebius/zai-org/GLM-5.2":{input:1.4,output:4.4},"nebius/zai-org/GLM-5.3-Flash":{input:.15,output:.5,cache_read:.15},"nebius/zai-org/GLM-5.3":{input:1.4,output:4.4,cache_read:1.4},"nebius/nvidia/nemotron-3-super-120b-a12b":{input:.3,output:.9},"nebius/nvidia/Nemotron-3_5-Lightning":{input:.06,output:.24,cache_read:.06},"nebius/nvidia/Nemotron-3-Ultra-550b-a55b":{input:1,output:3,cache_read:1},"nebius/openai/gpt-oss-120b":{input:.15,output:.6,reasoning:.6,cache_read:.015,cache_write:.18},"nebius/NousResearch/Hermes-4-405B":{input:1,output:3,reasoning:3,cache_read:.1,cache_write:1.25},"minimax-cn/MiniMax-M3":{input:.3,output:1.2,cache_read:.06,tiers:[{input:.6,output:2.4,cache_read:.12,tier:{type:"context",size:512e3}}],context_over_200k:{input:.6,output:2.4,cache_read:.12}},"minimax-cn/MiniMax-M2.1":{input:.3,output:1.2,cache_read:.03,cache_write:.375},"minimax-cn/MiniMax-M2.5":{input:.3,output:1.2,cache_read:.03,cache_write:.375},"minimax-cn/MiniMax-M2.7":{input:.3,output:1.2,cache_read:.06,cache_write:.375},"minimax-cn/MiniMax-M2.7-highspeed":{input:.6,output:2.4,cache_read:.06,cache_write:.375},"minimax-cn/MiniMax-M2":{input:.3,output:1.2},"minimax-cn/MiniMax-M2.5-highspeed":{input:.6,output:2.4,cache_read:.06,cache_write:.375},"scaleway/deepseek-v4-flash-0731":{input:.468,output:.936,reasoning:.936,cache_read:.0936},"scaleway/qwen3-235b-a22b-instruct-2507":{input:.75,output:2.25,reasoning:8.4},"scaleway/whisper-large-v3":{input:.003,output:0},"scaleway/bge-multilingual-gemma2":{input:.1,output:0},"scaleway/qwen3-coder-30b-a3b-instruct":{input:.2,output:.8},"scaleway/gemma-4-26b-a4b-it":{input:.25,output:.5},"scaleway/llama-3.3-70b-instruct":{input:.9,output:.9},"scaleway/qwen3.6-35b-a3b":{input:.25,output:1.5},"scaleway/pixtral-12b-2409":{input:.2,output:.2},"scaleway/qwen3-embedding-8b":{input:.1,output:0},"scaleway/mistral-medium-3.5-128b":{input:1.5,output:7.5},"scaleway/qwen3.5-397b-a17b":{input:.6,output:3.6},"scaleway/glm-5.2":{input:1.8,output:5.5},"scaleway/mistral-small-3.2-24b-instruct-2506":{input:.15,output:.35},"scaleway/gpt-oss-120b":{input:.15,output:.6},"vercel/interfaze/interfaze-beta":{input:1.5,output:3.5},"vercel/zai/glm-4.5":{input:.6,output:2.2,cache_read:.11},"vercel/zai/glm-5v-turbo":{input:1.2,output:4,cache_read:.24},"vercel/zai/glm-5.3-flash":{input:.15,output:.5,cache_read:.03},"vercel/zai/glm-4.6":{input:.6,output:2.2,cache_read:.11},"vercel/zai/glm-5.2-fast":{input:2.1,output:6.6,cache_read:.21},"vercel/zai/glm-5":{input:1,output:3.2},"vercel/zai/glm-4.5v":{input:.6,output:1.8,cache_read:.11},"vercel/zai/glm-5.3-flashx":{input:.37,output:1.25,cache_read:.075},"vercel/zai/glm-4.7-flash":{input:.07,output:.4},"vercel/zai/glm-4.7":{input:.6,output:2.2,cache_read:.12},"vercel/zai/glm-5.2":{input:.8,output:2.55,cache_read:.16},"vercel/zai/glm-5.1":{input:1.4,output:4.4,cache_read:.26},"vercel/zai/glm-4.7-flashx":{input:.06,output:.4,cache_read:.01},"vercel/zai/glm-5-turbo":{input:1.2,output:4,cache_read:.24},"vercel/zai/glm-4.5-air":{input:.2,output:1.1,cache_read:.03},"vercel/zai/glm-5.3":{input:1.4,output:4.4,cache_read:.14},"vercel/zai/glm-5.3-fast":{input:2.1,output:6.6,cache_read:.21},"vercel/spacexai/grok-4.20-multi-agent":{input:1.25,output:2.5,cache_read:.2,tiers:[{input:2.5,output:5,cache_read:.4,tier:{type:"context",size:200001}}],context_over_200k:{input:2.5,output:5,cache_read:.4}},"vercel/spacexai/grok-4.20-reasoning":{input:1.25,output:2.5,cache_read:.2,tiers:[{input:2.5,output:5,cache_read:.4,tier:{type:"context",size:200001}}],context_over_200k:{input:2.5,output:5,cache_read:.4}},"vercel/spacexai/grok-4.7":{input:1.2,output:3.6,cache_read:.3,tiers:[{input:2.4,output:7.2,cache_read:.6,tier:{type:"context",size:200001}}],context_over_200k:{input:2.4,output:7.2,cache_read:.6}},"vercel/spacexai/grok-4.20-non-reasoning":{input:1.25,output:2.5,cache_read:.2,tiers:[{input:2.5,output:5,cache_read:.4,tier:{type:"context",size:200001}}],context_over_200k:{input:2.5,output:5,cache_read:.4}},"vercel/spacexai/grok-4.1-fast-reasoning":{input:.2,output:.5,cache_read:.05},"vercel/spacexai/grok-4.3":{input:1.25,output:2.5,cache_read:.2,tiers:[{input:2.5,output:5,cache_read:.4,tier:{type:"context",size:200001}}],context_over_200k:{input:2.5,output:5,cache_read:.4}},"vercel/spacexai/grok-4.5":{input:2,output:6,cache_read:.3,tiers:[{input:4,output:12,cache_read:.6,tier:{type:"context",size:200001}}],context_over_200k:{input:4,output:12,cache_read:.6}},"vercel/spacexai/grok-4.20-multi-agent-beta":{input:1.25,output:2.5,cache_read:.2,tiers:[{input:2.5,output:5,cache_read:.4,tier:{type:"context",size:200001}}],context_over_200k:{input:2.5,output:5,cache_read:.4}},"vercel/spacexai/grok-4.20-non-reasoning-beta":{input:1.25,output:2.5,cache_read:.4,tiers:[{input:2.5,output:5,cache_read:.4,tier:{type:"context",size:200001}}],context_over_200k:{input:2.5,output:5,cache_read:.4}},"vercel/spacexai/grok-build-0.1":{input:1,output:2,cache_read:.2,tiers:[{input:2,output:4,cache_read:.4,tier:{type:"context",size:200001}}],context_over_200k:{input:2,output:4,cache_read:.4}},"vercel/spacexai/grok-4.1-fast-non-reasoning":{input:.2,output:.5,cache_read:.05},"vercel/spacexai/grok-4.20-reasoning-beta":{input:1.25,output:2.5,cache_read:.2,tiers:[{input:2.5,output:5,cache_read:.4,tier:{type:"context",size:200001}}],context_over_200k:{input:2.5,output:5,cache_read:.4}},"vercel/spacexai/grok-4.6":{input:2,output:6,cache_read:.5,tiers:[{input:4,output:12,cache_read:1,tier:{type:"context",size:200001}}],context_over_200k:{input:4,output:12,cache_read:1}},"vercel/poolside/laguna-s-2.1":{input:.1,output:.2,cache_read:.01},"vercel/anthropic/claude-opus-4.5":{input:5,output:25,cache_read:.5,cache_write:6.25},"vercel/anthropic/claude-opus-4.6":{input:5,output:25,cache_read:.5,cache_write:6.25},"vercel/anthropic/claude-opus-4.7":{input:5,output:25,cache_read:.5,cache_write:6.25},"vercel/anthropic/claude-3-haiku":{input:.25,output:1.25,cache_read:.03,cache_write:.3},"vercel/anthropic/claude-opus-4.8":{input:5,output:25,cache_read:.5,cache_write:6.25},"vercel/anthropic/claude-opus-5.5-fast":{input:8,output:40,cache_read:.4,cache_write:10},"vercel/anthropic/claude-haiku-4.5":{input:1,output:5,cache_read:.1,cache_write:1.25},"vercel/anthropic/claude-opus-5":{input:5,output:25,cache_read:.5,cache_write:6.25},"vercel/anthropic/claude-fable-5.1":{input:10,output:50,cache_read:.25,cache_write:12.5},"vercel/anthropic/claude-fable-5":{input:10,output:50,cache_read:1,cache_write:12.5},"vercel/anthropic/claude-opus-4.8-fast":{input:10,output:50,cache_read:1,cache_write:12.5},"vercel/anthropic/claude-sonnet-4":{input:3,output:15,cache_read:.3,cache_write:3.75,tiers:[{input:6,output:22.5,cache_read:.6,cache_write:7.5,tier:{type:"context",size:200001}}],context_over_200k:{input:6,output:22.5,cache_read:.6,cache_write:7.5}},"vercel/anthropic/claude-sonnet-5":{input:2,output:10,cache_read:.2,cache_write:2.5},"vercel/anthropic/claude-sonnet-4.6":{input:3,output:15,cache_read:.3,cache_write:3.75,tiers:[{input:6,output:22.5,cache_read:.6,cache_write:7.5,tier:{type:"context",size:2e5}}],context_over_200k:{input:6,output:22.5,cache_read:.6,cache_write:7.5}},"vercel/anthropic/claude-opus-5.5":{input:4,output:20,cache_read:.2,cache_write:5},"vercel/anthropic/claude-opus-5-fast":{input:10,output:50,cache_read:1,cache_write:12.5},"vercel/anthropic/claude-opus-4":{input:15,output:75,cache_read:1.5,cache_write:18.75},"vercel/anthropic/claude-sonnet-4.5":{input:3,output:15,cache_read:.3,cache_write:3.75},"vercel/cohere/command-a":{input:2.5,output:10},"vercel/deepseek/deepseek-v4-flash-0731":{input:.076,output:.153,cache_read:.014},"vercel/deepseek/deepseek-v4.1-flash":{input:.3,output:1.2,cache_read:.007},"vercel/deepseek/deepseek-v4-flash-vision-exp":{input:.22,output:.66,cache_read:.007},"vercel/deepseek/deepseek-v3.1-terminus":{input:.27,output:1,cache_read:.135},"vercel/deepseek/deepseek-v4-pro-0813":{input:.66,output:1.98,cache_read:.066},"vercel/deepseek/deepseek-v3.2-thinking":{input:.62,output:1.85},"vercel/deepseek/deepseek-v3.1":{input:.25,output:.95,cache_read:.13},"vercel/deepseek/deepseek-v4-pro":{input:.66,output:1.98,cache_read:.022},"vercel/deepseek/deepseek-v3.2":{input:.62,output:1.85},"vercel/deepseek/deepseek-v4-flash":{input:.13,output:.26,cache_read:.028},"vercel/deepseek/deepseek-r1":{input:1.35,output:5.4},"vercel/quiverai/arrow-2":{input:4,output:20,cache_read:.4,cache_write:5},"vercel/quiverai/arrow-2-telos":{input:6,output:30,cache_read:.6,cache_write:7.5},"vercel/tencent/hy-mt2-lite":{input:.044,output:.177},"vercel/tencent/hy3":{input:.14,output:.58,cache_read:.035},"vercel/tencent/hy-mt2-plus":{input:.074,output:.295},"vercel/tencent/hy-mt2-pro":{input:.074,output:.295},"vercel/tencent/hy4-preview":{input:.834,output:2.501,cache_read:.042},"vercel/inference-net/schematron-v2-small":{input:.05,output:.23,cache_read:.05},"vercel/inference-net/schematron-v2-turbo":{input:.03,output:.15,cache_read:.03},"vercel/thinkingmachines/inkling-small":{input:.5,output:1.2,cache_read:.1},"vercel/thinkingmachines/inkling":{input:1,output:4.05,cache_read:.17},"vercel/meta/muse-spark-1.3":{input:1.25,output:4.25,cache_read:.15},"vercel/meta/muse-glimmer-30b":{input:.35,output:1.5,cache_read:.04},"vercel/meta/muse-spark-1.1":{input:1.25,output:4.25,cache_read:.15},"vercel/meta/llama-3.1-8b":{input:.22,output:.22},"vercel/meta/llama-3.1-70b":{input:.72,output:.72},"vercel/meta/muse-spark-1.2":{input:1.25,output:4.25,cache_read:.15},"vercel/meta/muse-spark-1.2-contributor":{input:.1,output:.2,cache_read:.002},"vercel/meta/muse-spark-1.3-contributor":{input:.1,output:.2,cache_read:.002},"vercel/arcee-ai/trinity-large-thinking":{input:.25,output:.9},"vercel/alibaba/qwen3.5-flash":{input:.1,output:.4,cache_read:.01,cache_write:.125},"vercel/alibaba/qwen-3-32b":{input:.16,output:.64},"vercel/alibaba/qwen3-vl-235b-a22b-instruct":{input:.4,output:1.6},"vercel/alibaba/qwen3.7-max":{input:2.5,output:7.5,cache_read:.5,cache_write:3.125},"vercel/alibaba/qwen3.8-27b":{input:.5,output:3,cache_read:.1,cache_write:.625},"vercel/alibaba/qwen3-vl-thinking":{input:.4,output:4},"vercel/alibaba/qwen3.8-2.4t-a95b":{input:2,output:6,cache_read:.25},"vercel/alibaba/qwen3-next-80b-a3b-thinking":{input:.15,output:1.2},"vercel/alibaba/qwen3.8-max":{input:2,output:6,cache_read:.25},"vercel/alibaba/qwen3-coder-next":{input:.5,output:1.2},"vercel/alibaba/qwen3-vl-instruct":{input:.4,output:1.6},"vercel/alibaba/qwen3-coder":{input:1.5,output:7.5,cache_read:.3,tiers:[{input:2.7,output:13.5,cache_read:.54,tier:{type:"context",size:32001}},{input:4.5,output:22.5,cache_read:.9,tier:{type:"context",size:128001}}]},"vercel/alibaba/qwen3.5-plus":{input:.4,output:2.5,cache_read:.04,cache_write:.5,tiers:[{input:.5,output:3,cache_read:.05,cache_write:.625,tier:{type:"context",size:256001}}],context_over_200k:{input:.5,output:3,cache_read:.05,cache_write:.625}},"vercel/alibaba/qwen-3.6-max-preview":{input:1.3,output:7.8,cache_read:.13,cache_write:1.625,tiers:[{input:2,output:12,cache_read:.2,cache_write:2.5,tier:{type:"context",size:128e3}}]},"vercel/alibaba/qwen-3-14b":{input:.12,output:.24},"vercel/alibaba/qwen3.7-flash":{input:.03,output:.13,cache_read:.006,cache_write:.038,tiers:[{input:.1,output:.4,cache_read:.02,cache_write:.125,tier:{type:"context",size:32e3}},{input:.2,output:.8,cache_read:.04,cache_write:.25,tier:{type:"context",size:256e3}}]},"vercel/alibaba/qwen3-max":{input:1.2,output:6,cache_read:.24,tiers:[{input:2.4,output:12,cache_read:.48,tier:{type:"context",size:32001}},{input:3,output:15,cache_read:.6,tier:{type:"context",size:128001}}]},"vercel/alibaba/qwen-3-30b":{input:.12,output:.5},"vercel/alibaba/qwen3.8-omni-flash":{input:.15,output:.47,cache_read:.016},"vercel/alibaba/qwen3-coder-30b-a3b":{input:.15,output:.6},"vercel/alibaba/qwen3-max-preview":{input:1.2,output:6,cache_read:.24,tiers:[{input:2.4,output:12,cache_read:.48,tier:{type:"context",size:32001}},{input:3,output:15,cache_read:.6,tier:{type:"context",size:128001}}]},"vercel/alibaba/qwen3-next-80b-a3b-instruct":{input:.15,output:1.2},"vercel/alibaba/qwen3-max-thinking":{input:1.2,output:6,cache_read:.24,tiers:[{input:2.4,output:12,cache_read:.48,tier:{type:"context",size:32001}},{input:3,output:15,cache_read:.6,tier:{type:"context",size:128001}}]},"vercel/alibaba/qwen3-coder-plus":{input:1,output:5,cache_read:.2,tiers:[{input:1.8,output:9,cache_read:.36,tier:{type:"context",size:32001}},{input:3,output:15,cache_read:.6,tier:{type:"context",size:128001}},{input:6,output:60,cache_read:1.2,tier:{type:"context",size:256001}}]},"vercel/alibaba/qwen3.8-max-prime":{input:4,output:12,cache_read:.5},"vercel/alibaba/qwen3-235b-a22b-thinking":{input:.4,output:4},"vercel/alibaba/qwen3.8-flash":{input:.15,output:.47,cache_read:.016,cache_write:.2},"vercel/alibaba/qwen3.6-27b":{input:.6,output:3.6},"vercel/alibaba/qwen-3-235b":{input:.22,output:.88},"vercel/alibaba/qwen3.6-plus":{input:.5,output:3,cache_read:.05,cache_write:.625,tiers:[{input:2,output:6,cache_read:.2,cache_write:2.5,tier:{type:"context",size:256e3}}],context_over_200k:{input:2,output:6,cache_read:.2,cache_write:2.5}},"vercel/alibaba/qwen3.7-plus":{input:.4,output:1.6,cache_read:.08,cache_write:.5,tiers:[{input:1.2,output:4.8,cache_read:.24,cache_write:1.5,tier:{type:"context",size:256e3}}],context_over_200k:{input:1.2,output:4.8,cache_read:.24,cache_write:1.5}},"vercel/alibaba/qwen3.8-max-0902":{input:2,output:6,cache_read:.25,cache_write:2.5},"vercel/mixedbread/toast-1":{input:.3,output:.72,cache_read:.036},"vercel/bytedance/seed-1.8":{input:.25,output:2,cache_read:.05,tiers:[{input:.5,output:4,cache_read:.05,tier:{type:"context",size:128001}}]},"vercel/bytedance/seed-2.1-turbo":{input:.5,output:2.5,cache_read:.1},"vercel/bytedance/seed-1.6":{input:.25,output:2,cache_read:.05,tiers:[{input:.5,output:4,cache_read:.05,tier:{type:"context",size:128001}}]},"vercel/google/gemma-4-31b-it":{input:.14,output:.4},"vercel/google/gemini-omni-flash-preview":{input:1.5,output:9},"vercel/google/gemini-3.1-flash-image-preview":{input:.5,output:3,cache_read:.05},"vercel/google/gemini-2.5-flash-image":{input:.3,output:2.5,cache_read:.03},"vercel/google/gemini-3.8-flash-lite-tts":{input:.5,output:6,cache_read:.125},"vercel/google/gemini-3.6-flash":{input:.75,output:3.75,cache_read:.075},"vercel/google/gemma-4-26b-a4b-it":{input:.15,output:.6,cache_read:.015},"vercel/google/gemini-3.5-flash-lite":{input:.3,output:2.5,cache_read:.03},"vercel/google/gemini-3.1-flash-image":{input:.5,output:3,cache_read:.05},"vercel/google/gemini-3.1-pro-preview":{input:2,output:12,cache_read:.2,tiers:[{input:4,output:18,cache_read:.4,tier:{type:"context",size:200001}}],context_over_200k:{input:4,output:18,cache_read:.4}},"vercel/google/gemini-3-flash":{input:.5,output:3,cache_read:.05},"vercel/google/gemini-3.5-flash":{input:1.5,output:9,cache_read:.15},"vercel/google/gemini-3-pro-image":{input:2,output:12,cache_read:.2},"vercel/google/gemini-3.8-live":{input:.75,output:4.5},"vercel/google/gemini-3.1-flash-lite-image":{input:.25,output:1.5,cache_read:.03},"vercel/google/gemini-3.7-flash":{input:.75,output:3.75,cache_read:.075},"vercel/google/gemini-3.5-transcribe":{input:2,output:12},"vercel/google/gemini-3.8-flash":{input:.75,output:3.75,cache_read:.075},"vercel/google/gemini-2.5-flash-lite":{input:.1,output:.4,cache_read:.01},"vercel/google/gemini-3.8-flash-tts":{input:.5,output:9,cache_read:.125},"vercel/google/gemini-3.8-live-extended-thinking":{input:.75,output:4.5},"vercel/google/gemini-3.1-flash-lite":{input:.25,output:1.5,cache_read:.03},"vercel/google/gemini-2.5-flash":{input:.3,output:2.5,cache_read:.03,input_audio:1},"vercel/google/gemini-2.5-pro":{input:1.25,output:10,cache_read:.125,tiers:[{input:2.5,output:15,cache_read:.25,tier:{type:"context",size:2e5}}],context_over_200k:{input:2.5,output:15,cache_read:.25}},"vercel/sakana/fugu-max":{input:2,output:6,cache_read:.25},"vercel/sakana/fugu-ultra-v2":{input:5,output:30,cache_read:.5,tiers:[{input:10,output:45,cache_read:1,tier:{type:"context",size:272001}}],context_over_200k:{input:10,output:45,cache_read:1}},"vercel/sakana/namazu":{input:.95,output:4,cache_read:.15},"vercel/sakana/fugu-ultra":{input:5,output:30,cache_read:.5,tiers:[{input:10,output:45,cache_read:1,tier:{type:"context",size:272001}}],context_over_200k:{input:10,output:45,cache_read:1}},"vercel/inclusionai/ling-3.0-flash":{input:.021,output:.063,cache_read:.0042},"vercel/inclusionai/ling-3.0-flash-vl":{input:.075,output:.22,cache_read:.015},"vercel/moonshotai/kimi-k3":{input:3,output:15,cache_read:.3},"vercel/moonshotai/kimi-k3-fast":{input:4.5,output:22.5,cache_read:.45},"vercel/moonshotai/kimi-k2.7-code-highspeed":{input:1.9,output:8,cache_read:.38},"vercel/moonshotai/kimi-k2.6":{input:.95,output:4,cache_read:.16},"vercel/moonshotai/kimi-k2-thinking":{input:.47,output:2,cache_read:.141},"vercel/moonshotai/kimi-k2.5":{input:.6,output:3},"vercel/moonshotai/kimi-k2":{input:.57,output:2.3},"vercel/moonshotai/kimi-k2.7-code":{input:.95,output:4,cache_read:.16},"vercel/nvidia/nemotron-3-nano-30b-a3b":{input:.05,output:.2,cache_read:.025},"vercel/nvidia/nemotron-3.5-lightning":{input:.05,output:.2,cache_read:.01},"vercel/nvidia/nemotron-nano-9b-v2":{input:.06,output:.23},"vercel/nvidia/nemotron-3-super-120b-a12b":{input:.15,output:.65},"vercel/nvidia/nemotron-3-ultra-550b-a55b":{input:.6,output:2.4,cache_read:.12},"vercel/nvidia/nemotron-nano-12b-v2-vl":{input:.2,output:.6},"vercel/xiaomi/mimo-v2.6-pro":{input:.435,output:.87,cache_read:.0036},"vercel/xiaomi/mimo-v2.5":{input:.14,output:.28,cache_read:.0028},"vercel/xiaomi/mimo-v2.6-pro-ultraspeed":{input:4.35,output:8.7,cache_read:.036},"vercel/xiaomi/mimo-v2.5-pro":{input:.435,output:.87,cache_read:.0036},"vercel/xiaomi/mimo-v2.6-flash":{input:.14,output:.28,cache_read:.0028},"vercel/minimax/minimax-m2.5":{input:.3,output:1.2,cache_read:.03,cache_write:.375},"vercel/minimax/minimax-m2.1-lightning":{input:.3,output:2.4,cache_read:.03,cache_write:.375},"vercel/minimax/minimax-m2.7":{input:.3,output:1.2,cache_read:.06,cache_write:.375},"vercel/minimax/minimax-m3":{input:.3,output:1.2,cache_read:.06},"vercel/minimax/minimax-m2.7-highspeed":{input:.6,output:2.4,cache_read:.06,cache_write:.375},"vercel/minimax/minimax-m2.5-highspeed":{input:.6,output:2.4,cache_read:.03,cache_write:.375},"vercel/minimax/minimax-m2.1":{input:.3,output:1.2,cache_read:.03,cache_write:.375},"vercel/minimax/minimax-m2":{input:.3,output:1.2,cache_read:.03,cache_write:.375},"vercel/stepfun/step-5-preview":{input:1,output:2.7,cache_read:.05},"vercel/stepfun/step-3.5-flash":{input:.09,output:.3,cache_read:.02},"vercel/stepfun/step-3.7-flash":{input:.2,output:1.15,cache_read:.04},"vercel/inception/mercury-coder-small":{input:.25,output:1},"vercel/inception/mercury-2.5":{input:.04,output:.15,cache_read:.004},"vercel/inception/mercury-2":{input:.25,output:.75,cache_read:.024999999999999998},"vercel/amazon/nova-2-lite":{input:.3,output:2.5,cache_read:.075},"vercel/amazon/nova-lite":{input:.06,output:.24,cache_read:.015,cache_write:.06},"vercel/amazon/nova-pro":{input:.8,output:3.2,cache_read:.2,cache_write:.8},"vercel/amazon/nova-micro":{input:.035,output:.14,cache_read:.00875,cache_write:.035},"vercel/mistral/mistral-nemo":{input:.04,output:.17},"vercel/mistral/mistral-medium-3.5":{input:1.5,output:7.5,cache_read:.15},"vercel/mistral/mistral-small":{input:.15,output:.6,cache_read:.015},"vercel/mistral/mistral-large-3":{input:.5,output:1.5,cache_read:.05},"vercel/mistral/ministral-14b":{input:.2,output:.2,cache_read:.02},"vercel/mistral/codestral":{input:.3,output:.9},"vercel/mistral/ministral-8b":{input:.1,output:.1},"vercel/mistral/ministral-3b":{input:.04,output:.04},"vercel/morph/morph-v3-fast":{input:.8,output:1.2},"vercel/morph/morph-v3-large":{input:.9,output:1.9},"vercel/openai/gpt-4.1-mini-fast":{input:.7,output:2.8,cache_read:.175},"vercel/openai/o3-fast":{input:3.5,output:14,cache_read:.875},"vercel/openai/gpt-5.4":{input:2.5,output:15,cache_read:.25,tiers:[{input:5,output:22.5,cache_read:.5,tier:{type:"context",size:272e3}}],context_over_200k:{input:5,output:22.5,cache_read:.5}},"vercel/openai/gpt-5.4-pro":{input:30,output:180,tiers:[{input:60,output:270,tier:{type:"context",size:272e3}}],context_over_200k:{input:60,output:270}},"vercel/openai/gpt-oss-safeguard-120b":{input:.15,output:.6},"vercel/openai/gpt-3.5-turbo":{input:.5,output:1.5},"vercel/openai/gpt-5.2-fast":{input:3.5,output:28,cache_read:.35},"vercel/openai/gpt-4o-transcribe":{input:2.5,output:10},"vercel/openai/gpt-5.5-pro":{input:30,output:180,tiers:[{input:60,output:270,tier:{type:"context",size:272e3}}],context_over_200k:{input:60,output:270}},"vercel/openai/gpt-5.4-nano":{input:.2,output:1.25,cache_read:.02},"vercel/openai/gpt-realtime-2.1":{input:4,output:24,cache_read:.4},"vercel/openai/gpt-5.2-codex":{input:1.75,output:14,cache_read:.175},"vercel/openai/gpt-4o-fast":{input:4.25,output:17,cache_read:2.125},"vercel/openai/gpt-5.1-codex":{input:1.25,output:10,cache_read:.13},"vercel/openai/gpt-realtime-1.5":{input:4,output:16,cache_read:.4},"vercel/openai/gpt-4.1-nano-fast":{input:.2,output:.8,cache_read:.05},"vercel/openai/gpt-5-codex":{input:1.25,output:10,cache_read:.13},"vercel/openai/gpt-image-2":{input:5,output:30,cache_read:1.25},"vercel/openai/gpt-5.6-luna-fast":{input:.4,output:2.4,cache_read:.04,cache_write:.5,tiers:[{input:.8,output:3.6,cache_read:.08,cache_write:1,tier:{type:"context",size:272e3}}],context_over_200k:{input:.8,output:3.6,cache_read:.08,cache_write:1}},"vercel/openai/gpt-6-astra-fast":{input:20,output:100,cache_read:2,cache_write:25,tiers:[{input:40,output:150,cache_read:4,cache_write:50,tier:{type:"context",size:272001}}],context_over_200k:{input:40,output:150,cache_read:4,cache_write:50}},"vercel/openai/gpt-5.2-pro":{input:21,output:168},"vercel/openai/gpt-5.1-thinking-fast":{input:2.5,output:20,cache_read:.25},"vercel/openai/gpt-5.3-codex":{input:1.75,output:14,cache_read:.175},"vercel/openai/gpt-5.3-codex-fast":{input:3.5,output:28,cache_read:.35},"vercel/openai/gpt-5.5-fast":{input:12.5,output:75,cache_read:1.25},"vercel/openai/gpt-image-2.5-flare":{input:5,output:30,cache_read:1.25},"vercel/openai/gpt-5.4-fast":{input:5,output:30,cache_read:.5},"vercel/openai/gpt-5.6-sol-fast":{input:8,output:40,cache_read:.8,cache_write:10,tiers:[{input:16,output:60,cache_read:1.6,cache_write:20,tier:{type:"context",size:272e3}}],context_over_200k:{input:16,output:60,cache_read:1.6,cache_write:20}},"vercel/openai/o4-mini-fast":{input:2,output:8,cache_read:.5},"vercel/openai/gpt-5-pro":{input:15,output:120},"vercel/openai/gpt-5.1-thinking":{input:1.25,output:10,cache_read:.125},"vercel/openai/gpt-6-astra":{input:10,output:50,cache_read:1,cache_write:12.5,tiers:[{input:20,output:75,cache_read:2,cache_write:25,tier:{type:"context",size:272001}}],context_over_200k:{input:20,output:75,cache_read:2,cache_write:25}},"vercel/openai/gpt-5.4-mini-fast":{input:1.5,output:9,cache_read:.15},"vercel/openai/gpt-realtime-mini":{input:.6,output:2.4,cache_read:.06},"vercel/openai/gpt-5-mini-fast":{input:.45,output:3.6,cache_read:.045},"vercel/openai/o3-pro":{input:20,output:80},"vercel/openai/gpt-oss-20b":{input:.03,output:.14},"vercel/openai/gpt-oss-safeguard-20b":{input:.07,output:.2},"vercel/openai/gpt-image-2.5-sunburst":{input:5,output:30,cache_read:1.25},"vercel/openai/gpt-5.6-terra-fast":{input:4,output:24,cache_read:.4,cache_write:5,tiers:[{input:8,output:36,cache_read:.8,cache_write:10,tier:{type:"context",size:272e3}}],context_over_200k:{input:8,output:36,cache_read:.8,cache_write:10}},"vercel/openai/gpt-image-1":{input:5,output:40,cache_read:1.25},"vercel/openai/gpt-5.4-mini":{input:.75,output:4.5,cache_read:.075},"vercel/openai/gpt-5.6-luna":{input:.2,output:1.2,cache_read:.02,cache_write:.25,tiers:[{input:.4,output:1.8,cache_read:.04,cache_write:.5,tier:{type:"context",size:272e3}}],context_over_200k:{input:.4,output:1.8,cache_read:.04,cache_write:.5}},"vercel/openai/gpt-5.1-codex-max":{input:1.25,output:10,cache_read:.125},"vercel/openai/gpt-5.2":{input:1.75,output:14,cache_read:.175},"vercel/openai/gpt-5.5":{input:5,output:30,cache_read:.5,tiers:[{input:10,output:45,cache_read:1,tier:{type:"context",size:272e3}}],context_over_200k:{input:10,output:45,cache_read:1}},"vercel/openai/gpt-6-sol-fast":{input:4,output:20,cache_read:.4,cache_write:5,tiers:[{input:8,output:30,cache_read:.8,cache_write:10,tier:{type:"context",size:272001}}],context_over_200k:{input:8,output:30,cache_read:.8,cache_write:10}},"vercel/openai/gpt-6-luna-fast":{input:.2,output:1,cache_read:.02,cache_write:.25,tiers:[{input:.4,output:1.5,cache_read:.04,cache_write:.5,tier:{type:"context",size:272001}}],context_over_200k:{input:.4,output:1.5,cache_read:.04,cache_write:.5}},"vercel/openai/gpt-5-fast":{input:2.5,output:20,cache_read:.25},"vercel/openai/gpt-realtime-2":{input:4,output:24,cache_read:.4},"vercel/openai/gpt-4.1-fast":{input:3.5,output:14,cache_read:.875},"vercel/openai/gpt-6-luna":{input:.1,output:.5,cache_read:.01,cache_write:.125,tiers:[{input:.2,output:.75,cache_read:.02,cache_write:.25,tier:{type:"context",size:272001}}],context_over_200k:{input:.2,output:.75,cache_read:.02,cache_write:.25}},"vercel/openai/gpt-image-1-mini":{input:2,output:8,cache_read:.2},"vercel/openai/gpt-4o-mini-transcribe":{input:1.25,output:5},"vercel/openai/gpt-image-1.5":{input:5,output:32,cache_read:1.25},"vercel/openai/gpt-5.6-terra":{input:2,output:12,cache_read:.2,cache_write:2.5,tiers:[{input:4,output:18,cache_read:.4,cache_write:5,tier:{type:"context",size:272e3}}],context_over_200k:{input:4,output:18,cache_read:.4,cache_write:5}},"vercel/openai/gpt-oss-120b":{input:.1,output:.5,cache_read:.1},"vercel/openai/gpt-5.1-codex-mini":{input:.25,output:2,cache_read:.03},"vercel/openai/gpt-5.6-sol":{input:4,output:20,cache_read:.4,cache_write:5,tiers:[{input:8,output:30,cache_read:.8,cache_write:10,tier:{type:"context",size:272e3}}],context_over_200k:{input:8,output:30,cache_read:.8,cache_write:10}},"vercel/openai/gpt-4o-mini-fast":{input:.25,output:1,cache_read:.125},"vercel/openai/gpt-6-sol":{input:2,output:10,cache_read:.2,cache_write:2.5,tiers:[{input:4,output:15,cache_read:.4,cache_write:5,tier:{type:"context",size:272001}}],context_over_200k:{input:4,output:15,cache_read:.4,cache_write:5}},"vercel/openai/gpt-5":{input:1.25,output:10,cache_read:.125},"vercel/openai/o3":{input:2,output:8,cache_read:.5},"vercel/openai/gpt-4-turbo":{input:10,output:30},"vercel/openai/gpt-4.1-mini":{input:.4,output:1.6,cache_read:.1},"vercel/openai/gpt-4.1":{input:2,output:8,cache_read:.5},"vercel/openai/gpt-4o-mini":{input:.15,output:.6,cache_read:.075},"vercel/openai/o1":{input:15,output:60,cache_read:7.5},"vercel/openai/gpt-5-nano":{input:.05,output:.4,cache_read:.005},"vercel/openai/gpt-4.1-nano":{input:.1,output:.4,cache_read:.025},"vercel/openai/o3-mini":{input:1.1,output:4.4,cache_read:.55},"vercel/openai/o4-mini":{input:1.1,output:4.4,cache_read:.275},"vercel/openai/gpt-5-mini":{input:.25,output:2,cache_read:.025},"vercel/openai/gpt-4o":{input:2.5,output:10,cache_read:1.25},"ebcloud/Kimi-K2.6":{input:.9286,output:3.8571},"ebcloud/GLM-5.1":{input:.8571,output:3.4286},"ebcloud/DeepSeek-V4-Flash":{input:.143,output:.2857},"ebcloud/DeepSeek-V4-Pro":{input:.4286,output:.8571},"greenpt/glm-5.2-honey-ultra":{input:1.254,output:5.016,cache_read:.3135},"greenpt/glm-5.2-ponytail-lite":{input:1.254,output:5.016,cache_read:.3135},"greenpt/gemma-3-27b-it":{input:.342,output:.684},"greenpt/glm-5.3-flash":{input:.127754,output:.511016,cache_read:.0255508},"greenpt/deepseek-v4-flash-0731":{input:.1596,output:.399,cache_read:.0456},"greenpt/qwen3-235b-a22b-instruct-2507":{input:1.026,output:3.078},"greenpt/kimi-k3":{input:3.762,output:18.81,cache_read:.9405},"greenpt/deepseek-v4.1-flash":{input:.255552,output:1.27776,cache_read:.0127776},"greenpt/minimax-m2.5":{input:.1938,output:1.129,cache_read:.0627},"greenpt/kimi-k2.6":{input:.7524,output:4.275,cache_read:.2508},"greenpt/green-s":{input:.00437,output:0},"greenpt/green-l":{input:.285,output:.912},"greenpt/qwen3-coder-30b-a3b-instruct":{input:.285,output:1.083},"greenpt/llama-3.3-70b-instruct":{input:1.254,output:1.254},"greenpt/gemma4":{input:.57,output:1.71},"greenpt/qwen3.6-35b-a3b":{input:.342,output:2.052},"greenpt/pixtral-12b-2409":{input:.285,output:.285},"greenpt/glm-5.2-honey":{input:1.254,output:5.016,cache_read:.3135},"greenpt/holo2-30b-a3b":{input:.399,output:.969},"greenpt/green-r-raw":{input:.399,output:1.083},"greenpt/green-s-pro":{input:.00437,output:0},"greenpt/devstral-2-123b-instruct-2512":{input:.57,output:2.736},"greenpt/mistral-medium-3.5-128b":{input:2.052,output:10.26},"greenpt/qwen3.5-397b-a17b":{input:.798,output:4.959},"greenpt/glm-5.2":{input:1.254,output:5.016,cache_read:.3135},"greenpt/voxtral-small-24b-2507":{input:.228,output:.513},"greenpt/green-l-raw":{input:.285,output:.912},"greenpt/glm-5.2-ponytail-ultra":{input:1.254,output:5.016,cache_read:.3135},"greenpt/green-r":{input:.399,output:1.083},"greenpt/glm-5.1":{input:1.756,output:5.518},"greenpt/mistral-small-3.2-24b-instruct-2506":{input:.228,output:.456},"greenpt/glm-5.2-caveman":{input:1.254,output:5.016,cache_read:.3135},"greenpt/kimi-k2.6-fast":{input:1.655,output:8.778},"greenpt/gpt-oss-120b":{input:.228,output:.798},"greenpt/glm-5.3":{input:1.27754,output:5.11016,cache_read:.319385},"greenpt/glm-5.2-caveman-ultra":{input:1.254,output:5.016,cache_read:.3135},"greenpt/kimi-k2.7-code":{input:.9006,output:4.389,cache_read:.1881},"greenpt/glm-5.2-ponytail":{input:1.254,output:5.016,cache_read:.3135},"greenpt/glm-5.2-honey-lite":{input:1.254,output:5.016,cache_read:.3135},"greenpt/glm-5.2-caveman-lite":{input:1.254,output:5.016,cache_read:.3135},"mixlayer/qwen/qwen3.5-27b":{input:.3,output:2.4},"mixlayer/qwen/qwen3.5-122b-a10b":{input:.4,output:3.2},"mixlayer/qwen/qwen3.5-9b":{input:.1,output:.4},"mixlayer/qwen/qwen3.5-35b-a3b":{input:.25,output:1.3},"mixlayer/qwen/qwen3.5-397b-a17b":{input:.6,output:3.6},"hyper/qwen3.7-max":{input:2.5,output:7.5,cache_read:.5},"hyper/qwen3.8-27b":{input:.5,output:3,cache_read:.1},"hyper/qwen3.8-2.4t-a95b":{input:2,output:6,cache_read:.25},"hyper/glm-5.3-flash":{input:.16332,output:.5444,cache_read:.031575},"hyper/deepseek-v4-flash-0731":{input:.44,output:1.32,cache_read:.044},"hyper/qwen3.8-max":{input:2,output:6,cache_read:.25},"hyper/kimi-k3":{input:3.2664,output:16.332,cache_read:.32664},"hyper/deepseek-v4.1-flash":{input:.3,output:1.2,cache_read:.03},"hyper/qwen3.7-flash":{input:.2,output:.8,cache_read:.04},"hyper/kimi-k2-thinking":{input:.6,output:2.5,cache_read:.3},"hyper/gemma-4-26b-a4b-it":{input:.098,output:.334,cache_read:.049},"hyper/minimax-m2.7":{input:.484,output:1.852,cache_read:.242},"hyper/deepseek-v4-pro-0813":{input:1.437216,output:4.311648,cache_read:.047907},"hyper/inkling":{input:1.0888,output:4.40964,cache_read:.185096},"hyper/minimax-m3":{input:.32664,output:1.30656,cache_read:.064239},"hyper/qwen3.8-flash":{input:.15,output:.47,cache_read:.016},"hyper/glm-5.2":{input:1.52432,output:4.79072,cache_read:.152432},"hyper/deepseek-v4-pro":{input:2.4,output:4.8,cache_read:.2},"hyper/gpt-oss-120b":{input:.178,output:.68,cache_read:.089},"hyper/glm-5.3":{input:1.52432,output:4.79072,cache_read:.283088},"hyper/kimi-k2.7-code":{input:1.03436,output:4.3552,cache_read:.206872},"hyper/qwen3.7-plus":{input:1.2,output:4.8,cache_read:.24},"hyper/deepseek-v4-flash":{input:.2,output:.4,cache_read:.04},"jalapeno/Qwen3-VL-235B-A22B-Instruct":{input:.3,output:1.5},"jalapeno/MiniMax-M3":{input:.3,output:1.2},"jalapeno/Qwen3-Next-80B-A3B-Instruct":{input:.15,output:1.5},"jalapeno/GLM-5.1":{input:1.38,output:4.4},"jalapeno/Hy3":{input:.14,output:.58},"jalapeno/GLM-5.2":{input:1.4,output:4.4},"jalapeno/Qwen3-VL-235B-A22B-Thinking":{input:.98,output:3.95},"jalapeno/Qwen3.5-27B":{input:.3,output:2.4},"jalapeno/Kimi-K3":{input:3,output:15},"jalapeno/Qwen3-Next-80B-A3B-Thinking":{input:.15,output:1.5},"jalapeno/DeepSeek-V4-Flash":{input:.14,output:.28},"jalapeno/DeepSeek-V4-Pro":{input:1.6,output:3.38},"jalapeno/Qwen3.5-35B-A3B":{input:.25,output:2},"jalapeno/Qwen3.5-122B-A10B":{input:.4,output:3.2},"jalapeno/Qwen3.5-397B-A17B":{input:.6,output:3.6},"jalapeno/Kimi-K2.7-Code":{input:.95,output:4},"jalapeno/Kimi-K2.5":{input:.6,output:3},"dinference/glm-5":{input:.75,output:2.4},"dinference/minimax-m2.5":{input:.22,output:.88},"dinference/glm-4.7":{input:.45,output:1.65},"dinference/glm-5.2":{input:1.25,output:3.89},"dinference/glm-5.1":{input:1.25,output:3.89},"dinference/gpt-oss-120b":{input:.0675,output:.27},"neosmith/neosmith.neolite":{input:.6,output:2.4,cache_read:.08,cache_write:0},"neosmith/neosmith.intelligent-maestro":{input:2.4,output:12,cache_read:.35,cache_write:0},"neosmith/neosmith.intelligent-pro":{input:1.81,output:8.39,cache_read:.3,cache_write:0},"neosmith/neosmith.intelligent-basic":{input:1.17,output:4.37,cache_read:.22,cache_write:0},"fireworks-ai/accounts/fireworks/models/kimi-k2p6":{input:.95,output:4,cache_read:.16},"fireworks-ai/accounts/fireworks/models/nemotron-3-ultra-nvfp4":{input:.6,output:2.4,cache_read:.12},"fireworks-ai/accounts/fireworks/models/deepseek-v4-flash-0731":{input:.22,output:.66,cache_read:.007},"fireworks-ai/accounts/fireworks/models/muse-glimmer-30b":{input:.35,output:1.5,cache_read:.04},"fireworks-ai/accounts/fireworks/models/kimi-k3":{input:3,output:15,cache_read:.3},"fireworks-ai/accounts/fireworks/models/qwen3p8-2p4t-a95b":{input:2,output:6,cache_read:.25},"fireworks-ai/accounts/fireworks/models/ember-1":{input:3,output:15,cache_read:.3},"fireworks-ai/accounts/fireworks/models/deepseek-v4-flash-vision-exp":{input:.22,output:.66,cache_read:.007},"fireworks-ai/accounts/fireworks/models/deepseek-v4p1-flash":{input:.22,output:.66,cache_read:.007},"fireworks-ai/accounts/fireworks/models/qwen3p7-plus":{input:.4,output:1.6,cache_read:.08},"fireworks-ai/accounts/fireworks/models/glm-5p3":{input:1.4,output:4.4,cache_read:.26},"fireworks-ai/accounts/fireworks/models/minimax-m2p7":{input:1.2,output:1.2,cache_read:.6},"fireworks-ai/accounts/fireworks/models/nemotron-lightning-3p5-30b-a3b":{input:.05,output:.2,cache_read:.01},"fireworks-ai/accounts/fireworks/models/deepseek-v4-pro-0813":{input:1.32,output:3.96,cache_read:.044},"fireworks-ai/accounts/fireworks/models/inkling":{input:1,output:4.05,cache_read:.17},"fireworks-ai/accounts/fireworks/models/glm-5p2":{input:1.4,output:4.4,cache_read:.14},"fireworks-ai/accounts/fireworks/models/minimax-m3":{input:.3,output:1.2,cache_read:.06},"fireworks-ai/accounts/fireworks/models/kimi-k2p7-code":{input:.95,output:4,cache_read:.19},"fireworks-ai/accounts/fireworks/models/glm-5p3-flash":{input:.15,output:.5,cache_read:.03},"fireworks-ai/accounts/fireworks/models/deepseek-v4-pro":{input:1.2,output:1.2,cache_read:.6},"fireworks-ai/accounts/fireworks/models/gpt-oss-120b":{input:.15,output:.6,cache_read:.015},"fireworks-ai/accounts/fireworks/models/qwen3p8-max":{input:2,output:6,cache_read:.25},"fireworks-ai/accounts/fireworks/routers/minimax-latest":{input:.3,output:1.2,cache_read:.06},"fireworks-ai/accounts/fireworks/routers/glm-flash-latest":{input:.15,output:.5,cache_read:.03},"fireworks-ai/accounts/fireworks/routers/glm-fast-latest":{input:2.1,output:6.6,cache_read:.39},"fireworks-ai/accounts/fireworks/routers/kimi-k3-fast":{input:4.5,output:22.5,cache_read:.45},"fireworks-ai/accounts/fireworks/routers/glm-5p3-fast":{input:2.1,output:6.6,cache_read:.39},"fireworks-ai/accounts/fireworks/routers/kimi-fast-latest":{input:4.5,output:22.5,cache_read:.45},"fireworks-ai/accounts/fireworks/routers/qwen-max-latest":{input:2,output:6,cache_read:.25},"fireworks-ai/accounts/fireworks/routers/kimi-latest":{input:3,output:15,cache_read:.3},"fireworks-ai/accounts/fireworks/routers/deepseek-flash-latest":{input:.22,output:.66,cache_read:.007},"fireworks-ai/accounts/fireworks/routers/glm-5p2-fast":{input:2.1,output:6.6,cache_read:.21},"fireworks-ai/accounts/fireworks/routers/glm-latest":{input:1.4,output:4.4,cache_read:.26},"stepfun-ai/step-5-preview":{input:1,output:2.7,cache_read:.05},"stepfun-ai/step-3.7-flash":{input:.185,output:1.11,cache_read:.037},"stepfun-ai/step-3.5-flash":{input:.1,output:.3,cache_read:.02},"stepfun-ai/step-2-16k":{input:5.21,output:16.44,cache_read:1.04},"stepfun-ai/step-3.5-flash-2603":{input:.1,output:.3,cache_read:.02},"stepfun-ai/step-1-32k":{input:2.05,output:9.59,cache_read:.41},"fastrouter/anthropic/claude-opus-4.1":{input:15,output:75,cache_read:1.5,cache_write:18.75},"fastrouter/anthropic/claude-opus-4.8":{input:5,output:25},"fastrouter/anthropic/claude-sonnet-4":{input:3,output:15,cache_read:.3,cache_write:3.75},"fastrouter/anthropic/claude-sonnet-4.6":{input:3,output:15},"fastrouter/deepseek/deepseek-v4-pro":{input:1.74,output:3.48},"fastrouter/z-ai/glm-5":{input:.95,output:3.15},"fastrouter/z-ai/glm-5.1":{input:1.05,output:3.5},"fastrouter/sarvam/sarvam-30b":{input:.02,output:.1},"fastrouter/sarvam/sarvam-105b":{input:.04,output:.16},"fastrouter/x-ai/grok-4":{input:3,output:15,cache_read:.75,cache_write:15},"fastrouter/x-ai/grok-4.3":{input:1.25,output:2.5},"fastrouter/x-ai/grok-build-0.1":{input:1,output:2},"fastrouter/google/gemma-4-31b-it":{input:.13,output:.38},"fastrouter/google/gemini-3.1-flash-image-preview":{input:.5,output:3},"fastrouter/google/gemini-3-pro-image-preview":{input:2,output:12},"fastrouter/google/gemini-3.1-pro-preview":{input:2,output:12},"fastrouter/google/gemini-3.5-flash":{input:1.5,output:9},"fastrouter/google/gemini-2.5-pro":{input:1.25,output:10,cache_read:.31},"fastrouter/google/gemini-2.5-flash":{input:.3,output:2.5,cache_read:.0375},"fastrouter/deepseek-ai/deepseek-r1-distill-llama-70b":{input:.03,output:.14},"fastrouter/moonshotai/kimi-k2.6":{input:.75,output:3.5},"fastrouter/moonshotai/kimi-k2":{input:.55,output:2.2},"fastrouter/minimax/minimax-m2.7":{input:.3,output:1.2},"fastrouter/minimax/minimax-m2.7-highspeed":{input:.6,output:2.4},"fastrouter/qwen/qwen3-coder":{input:.3,output:1.2},"fastrouter/openai/gpt-5.5-pro":{input:30,output:180},"fastrouter/openai/gpt-5.4-nano":{input:.2,output:1.25},"fastrouter/openai/gpt-realtime-1.5":{input:4,output:16},"fastrouter/openai/gpt-5-mini":{input:.25,output:2,cache_read:.025},"fastrouter/openai/gpt-5.3-codex":{input:1.75,output:14},"fastrouter/openai/gpt-5-nano":{input:.05,output:.4,cache_read:.005},"fastrouter/openai/gpt-oss-20b":{input:.05,output:.2},"fastrouter/openai/gpt-5.4-mini":{input:.75,output:4.5},"fastrouter/openai/gpt-5.5":{input:5,output:30},"fastrouter/openai/gpt-4.1":{input:2,output:8,cache_read:.5},"fastrouter/openai/gpt-oss-120b":{input:.15,output:.6},"fastrouter/openai/gpt-5":{input:1.25,output:10,cache_read:.125},"orcarouter/grok/grok-4.3":{input:1.25,output:2.5,cache_read:.2,tiers:[{input:2.5,output:5,cache_read:.4,tier:{type:"context",size:2e5}}],context_over_200k:{input:2.5,output:5,cache_read:.4}},"orcarouter/grok/grok-4.5":{input:2,output:6,cache_read:.5},"orcarouter/grok/grok-4.6":{input:2,output:6,cache_read:.5},"orcarouter/anthropic/claude-opus-4.5":{input:5,output:25,cache_read:.5,cache_write:6.25},"orcarouter/anthropic/claude-opus-4.6":{input:5,output:25,cache_read:.5,cache_write:6.25},"orcarouter/anthropic/claude-opus-4.7":{input:5,output:25,cache_read:.5,cache_write:6.25},"orcarouter/anthropic/claude-opus-4.8":{input:5,output:25,cache_read:.5,cache_write:6.25},"orcarouter/anthropic/claude-haiku-4.5":{input:1,output:5,cache_read:.1,cache_write:1.25},"orcarouter/anthropic/claude-opus-5":{input:5,output:25,cache_read:.5,cache_write:10},"orcarouter/anthropic/claude-sonnet-4.5":{input:3,output:15,cache_read:.3,cache_write:3.75},"orcarouter/anthropic/claude-fable-5":{input:10,output:50,cache_read:1,cache_write:12.5},"orcarouter/anthropic/claude-sonnet-5":{input:2,output:10,cache_read:.2,cache_write:2.5},"orcarouter/anthropic/claude-sonnet-4.6":{input:3,output:15,cache_read:.3,cache_write:3.75},"orcarouter/deepseek/deepseek-v4-flash-0731":{input:.147,output:.295,cache_read:.02},"orcarouter/deepseek/deepseek-v4-flash-vision-exp":{input:.147,output:.295,cache_read:.02},"orcarouter/deepseek/deepseek-chat":{input:.147,output:.295,cache_read:.02},"orcarouter/deepseek/deepseek-v4-pro-0813":{input:.442,output:.884,cache_read:.06},"orcarouter/deepseek/deepseek-reasoner":{input:.147,output:.295,cache_read:.028},"orcarouter/deepseek/deepseek-v4-pro":{input:.442,output:.884,cache_read:.06},"orcarouter/deepseek/deepseek-v4-flash":{input:.147,output:.295,cache_read:.02},"orcarouter/tencent/hy3":{input:.18,output:.59,cache_read:.059},"orcarouter/z-ai/glm-4.5":{input:.6,output:2.2,cache_read:.11,cache_write:0},"orcarouter/z-ai/glm-5.3-flash":{input:.075,output:.25},"orcarouter/z-ai/glm-4.6":{input:.6,output:2.2,cache_read:.11,cache_write:0},"orcarouter/z-ai/glm-5":{input:1,output:3.2,cache_read:.26,cache_write:0},"orcarouter/z-ai/glm-4.7":{input:.6,output:2.2,cache_read:.11,cache_write:0},"orcarouter/z-ai/glm-5.2":{input:1.4,output:4.4,cache_read:.26},"orcarouter/z-ai/glm-5.1":{input:1.4,output:4.4,cache_read:.26,cache_write:0},"orcarouter/z-ai/glm-4.5-air":{input:.2,output:1.1,cache_read:.03,cache_write:0},"orcarouter/z-ai/glm-5.3":{input:1.26,output:3.96,cache_read:.234},"orcarouter/meta/muse-spark-1.1":{input:1.25,output:4.25,cache_read:.15},"orcarouter/meta/muse-spark-1.2":{input:1.25,output:4.25,cache_read:.15},"orcarouter/google/gemini-flash-latest":{input:.5,output:3,cache_read:.1},"orcarouter/google/gemma-4-31b-it":{input:.13,output:.38,cache_read:.02},"orcarouter/google/gemini-flash-lite-latest":{input:.25,output:1.5,cache_read:.025,input_audio:.5},"orcarouter/google/gemini-3.6-flash":{input:1.5,output:7.5,cache_read:.15},"orcarouter/google/gemini-robotics-er-1.6-preview":{input:1,output:5},"orcarouter/google/gemma-4-26b-a4b-it":{input:.06,output:.33,cache_read:.0075},"orcarouter/google/gemini-3.5-flash-lite":{input:.3,output:2.5,cache_read:.03},"orcarouter/google/gemini-3.1-pro-preview":{input:2,output:12,cache_read:.2,input_audio:2,tiers:[{input:4,output:18,cache_read:.4,tier:{type:"context",size:2e5}}],context_over_200k:{input:4,output:18,cache_read:.4}},"orcarouter/google/gemini-3.5-flash":{input:1.5,output:9,cache_read:.15,cache_write:.08333,input_audio:3},"orcarouter/google/gemini-2.5-pro":{input:1.25,output:10,cache_read:.125,tiers:[{input:2.5,output:15,cache_read:.25,tier:{type:"context",size:2e5}}],context_over_200k:{input:2.5,output:15,cache_read:.25}},"orcarouter/google/gemini-2.5-flash":{input:.3,output:2.5,cache_read:.03,input_audio:1},"orcarouter/google/gemini-3.1-pro-preview-customtools":{input:2,output:12,cache_read:.2,tiers:[{input:4,output:18,cache_read:.4,tier:{type:"context",size:2e5}}],context_over_200k:{input:4,output:18,cache_read:.4}},"orcarouter/google/gemini-3-flash-preview":{input:.5,output:3,cache_read:.05,input_audio:1},"orcarouter/google/gemini-2.5-flash-lite":{input:.1,output:.4,cache_read:.01,input_audio:.3},"orcarouter/google/gemini-3.1-flash-lite-preview":{input:.25,output:1.5,cache_read:.025,input_audio:.5},"orcarouter/google/gemini-3.1-flash-lite":{input:.25,output:1.5,cache_read:.025,input_audio:.5},"orcarouter/kimi/kimi-k3":{input:3.3,output:16.5,cache_read:.33},"orcarouter/kimi/kimi-k2.6":{input:.95,output:4,cache_read:.16},"orcarouter/kimi/kimi-k2.5":{input:.6,output:3,cache_read:.1,cache_write:0},"orcarouter/kimi/kimi-k2.7-code":{input:.95,output:4,cache_read:.19},"orcarouter/minimax/minimax-m2.5":{input:.3,output:1.2,cache_read:.03,cache_write:.375},"orcarouter/minimax/minimax-m2.7":{input:.3,output:1.2,cache_read:.06,cache_write:.375},"orcarouter/minimax/minimax-m3":{input:.3,output:1.2,cache_read:.06},"orcarouter/minimax/minimax-m2.7-highspeed":{input:.6,output:2.4,cache_read:.06,cache_write:.375},"orcarouter/minimax/minimax-m2.5-highspeed":{input:.6,output:2.4,cache_read:.03,cache_write:.375},"orcarouter/qwen/qwen3.5-flash":{input:.1,output:.4},"orcarouter/qwen/qwen3-vl-235b-a22b-instruct":{input:.4,output:1.6},"orcarouter/qwen/qwen3.7-max":{input:1.25,output:3.75,cache_read:.25,cache_write:1.563},"orcarouter/qwen/qwen3.8-27b":{input:.33,output:2.4},"orcarouter/qwen/qwen3-vl-235b-a22b-thinking":{input:.4,output:4},"orcarouter/qwen/qwen3.5-27b":{input:.086,output:.688},"orcarouter/qwen/qwen3.8-max":{input:2,output:6,cache_read:.25,cache_write:2.5},"orcarouter/qwen/qwen3.5-plus":{input:.115,output:.688,reasoning:2.4},"orcarouter/qwen/qwen3.7-flash":{input:.03,output:.13,cache_read:.006,cache_write:.038},"orcarouter/qwen/qwen3-max":{input:.359,output:1.434},"orcarouter/qwen/qwen3.5-122b-a10b":{input:.115,output:.917},"orcarouter/qwen/qwen3.6-35b-a3b":{input:.248,output:1.485},"orcarouter/qwen/qwen3.6-flash":{input:.25,output:1.5},"orcarouter/qwen/qwen3.5-35b-a3b":{input:.057,output:.459},"orcarouter/qwen/qwen3.5-397b-a17b":{input:.172,output:1.032},"orcarouter/qwen/qwen3.6-plus":{input:.5,output:3,cache_read:.05,cache_write:.625,tiers:[{input:2,output:6,cache_read:.2,cache_write:2.5,tier:{type:"context",size:256e3}}],context_over_200k:{input:2,output:6,cache_read:.2,cache_write:2.5}},"orcarouter/qwen/qwen3.7-plus":{input:.35,output:1.42,cache_read:.071},"orcarouter/openai/gpt-5.4":{input:2.5,output:15,cache_read:.25,tiers:[{input:5,output:22.5,cache_read:.5,tier:{type:"context",size:272e3}}],context_over_200k:{input:5,output:22.5,cache_read:.5}},"orcarouter/openai/gpt-5.4-pro":{input:30,output:180,tiers:[{input:60,output:270,tier:{type:"context",size:272e3}}],context_over_200k:{input:60,output:270}},"orcarouter/openai/gpt-3.5-turbo":{input:.5,output:1.5,cache_read:0},"orcarouter/openai/gpt-5.5-pro":{input:30,output:180,tiers:[{input:60,output:270,tier:{type:"context",size:272e3}}],context_over_200k:{input:60,output:270}},"orcarouter/openai/gpt-5.4-nano":{input:.2,output:1.25,cache_read:.02},"orcarouter/openai/gpt-4o-2024-05-13":{input:5,output:15},"orcarouter/openai/gpt-5.2-codex":{input:1.75,output:14,cache_read:.175},"orcarouter/openai/gpt-5.1-codex":{input:1.25,output:10,cache_read:.125},"orcarouter/openai/gpt-4o":{input:2.5,output:10,cache_read:1.25},"orcarouter/openai/gpt-5-mini":{input:.25,output:2,cache_read:.025},"orcarouter/openai/gpt-5.2-pro":{input:21,output:168},"orcarouter/openai/gpt-4":{input:30,output:60},"orcarouter/openai/gpt-5.3-codex":{input:1.75,output:14,cache_read:.175},"orcarouter/openai/gpt-4.1-nano":{input:.1,output:.4,cache_read:.025},"orcarouter/openai/gpt-5-nano":{input:.05,output:.4,cache_read:.005},"orcarouter/openai/gpt-5.2-chat-latest":{input:1.75,output:14,cache_read:.175},"orcarouter/openai/gpt-5.1-chat-latest":{input:1.25,output:10,cache_read:.125},"orcarouter/openai/gpt-5-pro":{input:15,output:120},"orcarouter/openai/gpt-5-chat-latest":{input:1.25,output:10,cache_read:.125},"orcarouter/openai/gpt-4o-2024-08-06":{input:2.5,output:10,cache_read:1.25},"orcarouter/openai/gpt-5.1":{input:1.25,output:10,cache_read:.125},"orcarouter/openai/gpt-4o-mini":{input:.15,output:.6,cache_read:.075},"orcarouter/openai/gpt-5.4-mini":{input:.75,output:4.5,cache_read:.075},"orcarouter/openai/gpt-5.6-luna":{input:.2,output:1.2,cache_read:.02,cache_write:.25},"orcarouter/openai/gpt-5.2":{input:1.75,output:14,cache_read:.175},"orcarouter/openai/gpt-5.5":{input:5,output:30,cache_read:.5,tiers:[{input:10,output:45,cache_read:1,tier:{type:"context",size:272e3}}],context_over_200k:{input:10,output:45,cache_read:1}},"orcarouter/openai/gpt-4.1":{input:2,output:8,cache_read:.5},"orcarouter/openai/gpt-4o-2024-11-20":{input:2.5,output:10,cache_read:1.25},"orcarouter/openai/gpt-4.1-mini":{input:.4,output:1.6,cache_read:.1},"orcarouter/openai/gpt-5.6-terra":{input:2,output:12,cache_read:.2,cache_write:2.5},"orcarouter/openai/gpt-4-turbo":{input:10,output:30},"orcarouter/openai/gpt-oss-120b":{input:.03,output:.17},"orcarouter/openai/gpt-5.1-codex-mini":{input:.25,output:2,cache_read:.025},"orcarouter/openai/gpt-5":{input:1.25,output:10,cache_read:.125},"orcarouter/openai/gpt-5.6-sol":{input:4,output:20,cache_read:.4,cache_write:5},"friendli/google/gemma-4-31B-it":{input:.14,output:.4},"friendli/deepseek-ai/DeepSeek-V3.2":{input:.5,output:1.5,cache_read:.25},"friendli/MiniMaxAI/MiniMax-M2.5":{input:.3,output:1.2,cache_read:.06},"friendli/zai-org/GLM-5.1":{input:1.4,output:4.4,cache_read:.26},"friendli/zai-org/GLM-5.2":{input:1.4,output:4.4,cache_read:.26},"friendli/zai-org/GLM-5.3-Flash":{input:.15,output:.5,cache_read:.03},"friendli/zai-org/GLM-5.3":{input:1.26,output:3.96,cache_read:.234},"inco/kimi-k3:fast":{input:6,output:30},"inco/glm-5.3:fast":{input:2.8,output:8.8},"inco/glm-5.3-flash:fast":{input:.15,output:.5},"inco/minimax-m3":{input:.3,output:1.2},"inco/deepseek-v4.1-flash:fast":{input:.6,output:2.4},"inco/minimax-m3:fast":{input:.6,output:2.4},"inco/glm-5.3":{input:1.4,output:4.4},"sakana/fugu-ultra":{input:5,output:30,cache_read:.5,tiers:[{input:10,output:45,cache_read:1,tier:{type:"context",size:272e3}}],context_over_200k:{input:10,output:45,cache_read:1}},"sakana/fugu-ultra-20260615":{input:5,output:30,cache_read:.5,tiers:[{input:10,output:45,cache_read:1,tier:{type:"context",size:272e3}}],context_over_200k:{input:10,output:45,cache_read:1}},"sakana/sakana-namazu":{input:.95,output:4,cache_read:.15},"scx-ai/GLM-5.2":{input:.55,output:1.784,cache_read:.111},"scx-ai/Qwen3.8-Max":{input:1.815,output:5.4461,cache_read:.17,cache_write:2.5},"scx-ai/MiniMax-M2.7":{input:.48,output:1.79,cache_read:.05},"scx-ai/gpt-oss-120b":{input:.17,output:.55},"zenifra/alibaba/qwen3.6-35b-a3b":{input:.19,output:.48},"google-vertex-anthropic/claude-opus-4-8@default":{input:5,output:25,cache_read:.5,cache_write:6.25,tiers:[{input:10,output:37.5,cache_read:1,cache_write:12.5,tier:{type:"context",size:2e5}}],context_over_200k:{input:10,output:37.5,cache_read:1,cache_write:12.5}},"google-vertex-anthropic/claude-sonnet-4-5@20250929":{input:3,output:15,cache_read:.3,cache_write:3.75},"google-vertex-anthropic/claude-opus-4-6@default":{input:5,output:25,cache_read:.5,cache_write:6.25,tiers:[{input:10,output:37.5,cache_read:1,cache_write:12.5,tier:{type:"context",size:2e5}}],context_over_200k:{input:10,output:37.5,cache_read:1,cache_write:12.5}},"google-vertex-anthropic/claude-opus-4@20250514":{input:15,output:75,cache_read:1.5,cache_write:18.75},"google-vertex-anthropic/claude-opus-5-5@default":{input:4,output:20,cache_read:.2,cache_write:5},"google-vertex-anthropic/claude-opus-5@default":{input:5,output:25,cache_read:.5,cache_write:6.25},"google-vertex-anthropic/claude-sonnet-4-6@default":{input:3,output:15,cache_read:.3,cache_write:3.75,tiers:[{input:6,output:22.5,cache_read:.6,cache_write:7.5,tier:{type:"context",size:2e5}}],context_over_200k:{input:6,output:22.5,cache_read:.6,cache_write:7.5}},"google-vertex-anthropic/claude-haiku-4-5@20251001":{input:1,output:5,cache_read:.1,cache_write:1.25},"google-vertex-anthropic/claude-opus-4-1@20250805":{input:15,output:75,cache_read:1.5,cache_write:18.75},"google-vertex-anthropic/claude-opus-4-5@20251101":{input:5,output:25,cache_read:.5,cache_write:6.25},"google-vertex-anthropic/claude-opus-4-7@default":{input:5,output:25,cache_read:.5,cache_write:6.25,tiers:[{input:10,output:37.5,cache_read:1,cache_write:12.5,tier:{type:"context",size:2e5}}],context_over_200k:{input:10,output:37.5,cache_read:1,cache_write:12.5}},"google-vertex-anthropic/claude-fable-5-1@default":{input:10,output:50,cache_read:.25,cache_write:12.5},"google-vertex-anthropic/claude-fable-5@default":{input:10,output:50,cache_read:1,cache_write:12.5},"google-vertex-anthropic/claude-sonnet-4@20250514":{input:3,output:15,cache_read:.3,cache_write:3.75},"google-vertex-anthropic/claude-sonnet-5@default":{input:2,output:10,cache_read:.2,cache_write:2.5},"moonshotai/kimi-k3":{input:3,output:15,cache_read:.3},"moonshotai/kimi-k2.7-code-highspeed":{input:1.9,output:8,cache_read:.38},"moonshotai/kimi-k2.6":{input:.95,output:4,cache_read:.16},"moonshotai/kimi-k2.7-code":{input:.95,output:4,cache_read:.19},"ainetcafe/Kimi-K3":{input:2.1,output:10.5,cache_read:.3},"wallaby/moonshotai/kimi-k3":{input:2.7,output:13.5,cache_read:.27},"ofox/bailian/qwen-flash":{input:.022,output:.22,cache_read:.0043,cache_write:.027},"ofox/bailian/qwen3.5-flash":{input:.1,output:.4,cache_read:.01,cache_write:.125},"ofox/bailian/qwen3.7-max":{input:2.5,output:7.5,cache_read:.5,cache_write:3.125},"ofox/bailian/qwen3.8-27b":{input:.45,output:3.2,cache_read:.05,cache_write:.5625},"ofox/bailian/qwen3.5-27b":{input:.29,output:2.05,cache_read:.29},"ofox/bailian/qwen-max":{input:.35,output:1.38,cache_read:.069},"ofox/bailian/qwen3.8-max":{input:2,output:6,cache_read:.25,cache_write:2.5},"ofox/bailian/qwen3-coder-next":{input:.2,output:1.5},"ofox/bailian/qwen3.5-plus":{input:.4,output:2.4,cache_read:.04,cache_write:.4},"ofox/bailian/qwen-plus":{input:.12,output:.29,cache_read:.023},"ofox/bailian/qwen3-max":{input:.36,output:1.43,cache_read:.072},"ofox/bailian/qwen-turbo":{input:.05,output:.09,cache_read:.0086},"ofox/bailian/qwen-vl-max":{input:.23,output:.58,cache_read:.046},"ofox/bailian/qwen3.5-122b-a10b":{input:.29,output:2.29,cache_read:.29},"ofox/bailian/qwen3.6-flash":{input:.25,output:1.5,cache_read:.025,cache_write:.31},"ofox/bailian/qwen3-coder-flash":{input:.5,output:2.5,cache_read:.06,cache_write:.27},"ofox/bailian/qwen3-coder-plus":{input:1.8,output:9,cache_read:.2,cache_write:1},"ofox/bailian/qwen3.8-flash":{input:.15,output:.47,cache_read:.016,cache_write:.2},"ofox/bailian/qwen3.5-35b-a3b":{input:.29,output:1.83,cache_read:.29},"ofox/bailian/qwen3.6-max-preview":{input:2.15,output:12.86,cache_read:.2,cache_write:1.17},"ofox/bailian/qwen3.5-397b-a17b":{input:.55,output:3.5,cache_read:.55},"ofox/bailian/qwen3.6-27b":{input:.6,output:3.6},"ofox/bailian/qwen3.6-plus":{input:.5,output:3,cache_read:.05,cache_write:.625},"ofox/bailian/qwen3.7-plus":{input:.4,output:1.6,cache_read:.08,cache_write:.5},"ofox/bailian/qwen3.8-max-0902":{input:2,output:6,cache_read:.25,cache_write:2.5},"ofox/anthropic/claude-opus-4.5":{input:5,output:25,cache_read:.5,cache_write:6.25},"ofox/anthropic/claude-opus-4.6":{input:5,output:25,cache_read:.5,cache_write:6.25},"ofox/anthropic/claude-opus-4.7":{input:5,output:25,cache_read:.5,cache_write:6.25},"ofox/anthropic/claude-opus-4.8":{input:5,output:25,cache_read:.5,cache_write:6.25},"ofox/anthropic/claude-haiku-4.5":{input:1,output:5,cache_read:.1,cache_write:1.25},"ofox/anthropic/claude-opus-5":{input:5,output:25,cache_read:.5,cache_write:6.25},"ofox/anthropic/claude-fable-5.1":{input:10,output:50,cache_read:.25,cache_write:12.5},"ofox/anthropic/claude-sonnet-4.5":{input:3,output:15,cache_read:.3,cache_write:3.75},"ofox/anthropic/claude-fable-5":{input:10,output:50,cache_read:1,cache_write:12.5},"ofox/anthropic/claude-sonnet-5":{input:2,output:10,cache_read:.2,cache_write:2.5},"ofox/anthropic/claude-sonnet-4.6":{input:3,output:15,cache_read:.3,cache_write:3.75},"ofox/anthropic/claude-opus-5.5":{input:4,output:20,cache_read:.2,cache_write:5},"ofox/deepseek/deepseek-v4-flash-0731":{input:.308,output:.924,cache_read:.0098},"ofox/deepseek/deepseek-v4-flash-0423":{input:.19,output:.51,cache_read:.028},"ofox/deepseek/deepseek-v4.1-flash":{input:.21,output:.84,cache_read:.0042},"ofox/deepseek/deepseek-v4-flash-vision-exp":{input:.44,output:1.32,cache_read:.014},"ofox/deepseek/deepseek-v4-pro-0813":{input:.924,output:2.772,cache_read:.0308},"ofox/deepseek/deepseek-v4-pro-0423":{input:1.32,output:3.96,cache_read:.15},"ofox/deepseek/deepseek-v4-pro":{input:1.32,output:3.96,cache_read:.044},"ofox/deepseek/deepseek-v3.2":{input:.29,output:.43,cache_read:.06},"ofox/deepseek/deepseek-v4-flash":{input:.44,output:1.32,cache_read:.014},"ofox/z-ai/glm-5v-turbo":{input:1.2,output:4,cache_read:.24},"ofox/z-ai/glm-5.3-flash":{input:.15,output:.5,cache_read:.03},"ofox/z-ai/glm-4.6":{input:.6,output:2.2,cache_read:.11},"ofox/z-ai/glm-5":{input:1,output:3.2,cache_read:.2},"ofox/z-ai/glm-4.7":{input:.4,output:2.2,cache_read:.11},"ofox/z-ai/glm-5.2":{input:1.4,output:4.4,cache_read:.26},"ofox/z-ai/glm-5.1":{input:1.4,output:4.4,cache_read:.26},"ofox/z-ai/glm-4.7-flashx":{input:.072,output:.4,cache_read:.01},"ofox/z-ai/glm-5-turbo":{input:1.2,output:4,cache_read:.24},"ofox/z-ai/glm-5.3":{input:1.4,output:4.4,cache_read:.26},"ofox/x-ai/grok-4.7":{input:2,output:6,cache_read:.5},"ofox/x-ai/grok-4.3":{input:1.25,output:2.5,cache_read:.2},"ofox/x-ai/grok-4.5":{input:2,output:6,cache_read:.3},"ofox/x-ai/grok-4.20":{input:4,output:12,cache_read:.4},"ofox/x-ai/grok-4.1-fast":{input:.2,output:.5,cache_read:.05},"ofox/x-ai/grok-4.6":{input:2,output:6,cache_read:.5},"ofox/volcengine/doubao-seed-2.0-mini":{input:.06,output:.56,cache_read:.02,cache_write:.0024},"ofox/volcengine/doubao-seed-1-6-flash":{input:.03,output:.22,cache_read:.0043},"ofox/volcengine/doubao-seed-2.0-lite":{input:.13,output:.76,cache_read:.03,cache_write:.0024},"ofox/volcengine/doubao-seed-1-8":{input:.12,output:.29,cache_read:.023},"ofox/volcengine/doubao-seed-1-6":{input:.12,output:.29,cache_read:.023},"ofox/volcengine/doubao-seed-2.0-pro":{input:.67,output:3.36,cache_read:.14,cache_write:.0024},"ofox/volcengine/doubao-seed-1-6-vision":{input:.12,output:1.15,cache_read:.023},"ofox/volcengine/doubao-seed-2.1-turbo":{input:.3536,output:1.7696,cache_read:.068,cache_write:.0019},"ofox/volcengine/doubao-seed-2.1-pro":{input:.7072,output:3.536,cache_read:.1416,cache_write:.002},"ofox/volcengine/doubao-seed-character":{input:.177,output:.884,cache_read:.024,cache_write:.0025},"ofox/volcengine/doubao-seed-evolving":{input:.884,output:4.42,cache_read:.177,cache_write:.0025},"ofox/volcengine/doubao-seed-2.0-code":{input:.67,output:3.36,cache_read:.14,cache_write:.0024},"ofox/google/gemini-3.6-flash":{input:.75,output:3.75,cache_read:.075,cache_write:.0415,input_audio:1.5},"ofox/google/gemini-3.5-flash-lite":{input:.3,output:2.5,cache_read:.03,cache_write:.083},"ofox/google/gemini-3.1-pro-preview":{input:2,output:12,cache_read:.2,cache_write:4.5},"ofox/google/gemini-3.5-flash":{input:1.5,output:9,cache_read:.15,cache_write:.083,input_audio:3},"ofox/google/gemini-2.5-pro":{input:1.25,output:10,cache_read:.125,cache_write:4.5},"ofox/google/gemini-2.5-flash":{input:.3,output:2.5,cache_read:.03,cache_write:1,input_audio:1},"ofox/google/gemini-3.7-flash":{input:.75,output:3.75,cache_read:.075,cache_write:.0415,input_audio:1.5},"ofox/google/gemini-3-flash-preview":{input:.5,output:3,cache_read:.05,cache_write:1},"ofox/google/gemini-3.8-flash":{input:.75,output:3.75,cache_read:.075,cache_write:.0415,input_audio:.75},"ofox/google/gemini-2.5-flash-lite":{input:.1,output:.4,cache_read:.01,cache_write:1,input_audio:.3},"ofox/google/gemini-3.1-flash-lite":{input:.25,output:1.5,cache_read:.025,cache_write:1,input_audio:.5},"ofox/moonshotai/kimi-k3":{input:3,output:15,cache_read:.3},"ofox/moonshotai/kimi-k2.7-code-highspeed":{input:1.9,output:8,cache_read:.38},"ofox/moonshotai/kimi-k2.6":{input:.95,output:4,cache_read:.16},"ofox/moonshotai/kimi-k2.5":{input:.6,output:3,cache_read:.1},"ofox/moonshotai/kimi-k2.7-code":{input:.95,output:4,cache_read:.19},"ofox/minimax/minimax-m2.5-lightning":{input:.3,output:2.4,cache_read:.03,cache_write:.375},"ofox/minimax/minimax-m2.5":{input:.3,output:1.2,cache_read:.03,cache_write:.375},"ofox/minimax/minimax-m2.1-lightning":{input:.3,output:2.4,cache_read:.03,cache_write:.375},"ofox/minimax/minimax-m2.7":{input:.3,output:1.2,cache_read:.06,cache_write:.375},"ofox/minimax/minimax-m3":{input:.6,output:2.4,cache_read:.12},"ofox/minimax/minimax-m2.7-highspeed":{input:.6,output:2.4,cache_read:.06,cache_write:.375},"ofox/minimax/m2-her":{input:.3,output:1.2},"ofox/minimax/minimax-m2.1":{input:.3,output:1.2,cache_read:.03,cache_write:.375},"ofox/minimax/minimax-m2":{input:.3,output:1.2,cache_read:.03,cache_write:.375},"ofox/qwen/qwen-flash":{input:.022,output:.22,cache_read:.0043,cache_write:.027},"ofox/qwen/qwen3.5-flash":{input:.1,output:.4,cache_read:.01,cache_write:.125},"ofox/qwen/qwen3.7-max":{input:1.71,output:5.14,cache_read:.17,cache_write:2.14},"ofox/qwen/qwen3.8-27b":{input:.5,output:1.71,cache_read:.043,cache_write:.63},"ofox/qwen/qwen3.5-27b":{input:.29,output:2.05,cache_read:.29},"ofox/qwen/qwen-max":{input:.35,output:1.38,cache_read:.069},"ofox/qwen/qwen3.8-max":{input:1.71,output:5.14,cache_read:.17,cache_write:2.14},"ofox/qwen/qwen3-coder-next":{input:.2,output:1.5},"ofox/qwen/qwen3.5-plus":{input:.4,output:2.4,cache_read:.04,cache_write:.4},"ofox/qwen/qwen-plus":{input:.12,output:.29,cache_read:.023},"ofox/qwen/qwen3-max":{input:.36,output:1.43,cache_read:.072},"ofox/qwen/qwen-turbo":{input:.043,output:.09,cache_read:.0086},"ofox/qwen/qwen-vl-max":{input:.23,output:.58,cache_read:.023},"ofox/qwen/qwen3.5-122b-a10b":{input:.29,output:2.29,cache_read:.29},"ofox/qwen/qwen3.6-flash":{input:.25,output:1.5,cache_read:.025,cache_write:.31},"ofox/qwen/qwen3-coder-flash":{input:.5,output:2.5,cache_read:.06,cache_write:.27},"ofox/qwen/qwen3-coder-plus":{input:1.8,output:9,cache_read:.2,cache_write:1},"ofox/qwen/qwen3.8-flash":{input:.11,output:.39,cache_read:.011,cache_write:.14},"ofox/qwen/qwen3.5-35b-a3b":{input:.29,output:1.83,cache_read:.29},"ofox/qwen/qwen3.6-max-preview":{input:2.15,output:12.86,cache_read:.2,cache_write:1.17},"ofox/qwen/qwen3.5-397b-a17b":{input:.55,output:3.5,cache_read:.55},"ofox/qwen/qwen3.6-27b":{input:.43,output:2.57},"ofox/qwen/qwen3.6-plus":{input:.5,output:3,cache_read:.05,cache_write:.625},"ofox/qwen/qwen3.7-plus":{input:.4,output:1.6,cache_read:.08,cache_write:.5},"ofox/qwen/qwen3.8-max-0902":{input:1.71,output:5.14,cache_read:.17,cache_write:2.14},"ofox/openai/gpt-5.4":{input:2,output:12,cache_read:.2},"ofox/openai/gpt-5.4-pro":{input:24,output:144},"ofox/openai/gpt-5.4-nano":{input:.16,output:1,cache_read:.016},"ofox/openai/gpt-5.2-codex":{input:1.4,output:11.2,cache_read:.144},"ofox/openai/gpt-4o":{input:2,output:8,cache_read:1},"ofox/openai/gpt-5-mini":{input:.2,output:1.6,cache_read:.024},"ofox/openai/gpt-5.3-codex":{input:1.4,output:11.2,cache_read:.144},"ofox/openai/gpt-5-nano":{input:.04,output:.32,cache_read:.008},"ofox/openai/gpt-6-astra":{input:8,output:40,cache_read:.8,cache_write:10},"ofox/openai/gpt-5.1":{input:1,output:8,cache_read:.104},"ofox/openai/gpt-4o-mini":{input:.12,output:.48,cache_read:.06},"ofox/openai/gpt-5.4-mini":{input:.6,output:3.6,cache_read:.06},"ofox/openai/gpt-5.6-luna":{input:.2,output:1.2,cache_read:.02,cache_write:.25},"ofox/openai/gpt-5.1-codex-max":{input:1,output:8,cache_read:.104},"ofox/openai/gpt-5.2":{input:1.4,output:11.2,cache_read:.144},"ofox/openai/gpt-5.5":{input:4,output:24,cache_read:.4},"ofox/openai/gpt-4.1":{input:1.6,output:6.4,cache_read:.4},"ofox/openai/gpt-4.1-mini":{input:.32,output:1.28,cache_read:.08},"ofox/openai/gpt-6-luna":{input:.08,output:.4,cache_read:.008,cache_write:.1},"ofox/openai/gpt-5.6-terra":{input:2,output:12,cache_read:.2,cache_write:2.5},"ofox/openai/gpt-5.1-codex-mini":{input:.2,output:1.6,cache_read:.024},"ofox/openai/gpt-5":{input:1,output:8,cache_read:.104},"ofox/openai/gpt-5.6-sol":{input:2.5,output:15,cache_read:.25,cache_write:3.125},"ofox/openai/gpt-6-sol":{input:1.6,output:8,cache_read:.16,cache_write:2},"neon/gpt-5-4-mini":{input:.75,output:4.5,cache_read:.075},"neon/claude-haiku-4-5":{input:1,output:5,cache_read:.1,cache_write:1.25},"neon/gpt-5-6-luna":{input:.2,output:1.2,cache_read:.02,cache_write:.25,tiers:[{input:.4,output:1.8,cache_read:.04,cache_write:.5,tier:{type:"context",size:272e3}}],context_over_200k:{input:.4,output:1.8,cache_read:.04,cache_write:.5}},"neon/glm-5-3-flash":{input:.15,output:.5,cache_read:.03},"neon/gpt-5-6-terra":{input:2,output:12,cache_read:.2,cache_write:2.5,tiers:[{input:4,output:18,cache_read:.4,cache_write:5,tier:{type:"context",size:272e3}}],context_over_200k:{input:4,output:18,cache_read:.4,cache_write:5}},"neon/kimi-k3":{input:3,output:15,cache_read:.3},"neon/llama-4-maverick":{input:.5,output:1.5},"neon/gpt-5-mini":{input:.25,output:2,cache_read:.025},"neon/claude-opus-4-5":{input:5,output:25,cache_read:.5,cache_write:6.25},"neon/gpt-5-nano":{input:.05,output:.4,cache_read:.005},"neon/claude-sonnet-4-5":{input:3,output:15,cache_read:.3,cache_write:3.75},"neon/claude-fable-5-1":{input:10,output:50,cache_read:.25,cache_write:12.5},"neon/gpt-5-4-nano":{input:.2,output:1.25,cache_read:.02},"neon/gpt-5-6-sol":{input:5,output:30,cache_read:.5,cache_write:6.25,tiers:[{input:10,output:45,cache_read:1,cache_write:12.5,tier:{type:"context",size:272e3}}],context_over_200k:{input:10,output:45,cache_read:1,cache_write:12.5}},"neon/claude-opus-4-1":{input:15,output:75,cache_read:1.5,cache_write:18.75},"neon/gpt-5-5-pro":{input:30,output:180,tiers:[{input:60,output:270,tier:{type:"context",size:272e3}}],context_over_200k:{input:60,output:270}},"neon/gemini-3-1-pro":{input:2,output:12,cache_read:.2,tiers:[{input:4,output:18,cache_read:.4,tier:{type:"context",size:2e5}}],context_over_200k:{input:4,output:18,cache_read:.4}},"neon/glm-5-2":{input:1.4,output:4.4,cache_read:.26},"neon/gpt-6-astra":{input:10,output:50,cache_read:1,cache_write:12.5,tiers:[{input:20,output:75,cache_read:2,cache_write:25,tier:{type:"context",size:272e3}}],context_over_200k:{input:20,output:75,cache_read:2,cache_write:25}},"neon/claude-opus-5":{input:5,output:25,cache_read:.5,cache_write:6.25},"neon/qwen3-next-80b-a3b-instruct":{input:.15,output:1.2},"neon/gemini-3-flash":{input:.5,output:3,cache_read:.05,input_audio:1},"neon/gpt-oss-20b":{input:.07,output:.3},"neon/gpt-5-4":{input:2.5,output:15,cache_read:.25,tiers:[{input:5,output:22.5,cache_read:.5,tier:{type:"context",size:272e3}}],context_over_200k:{input:5,output:22.5,cache_read:.5}},"neon/claude-fable-5":{input:10,output:50,cache_read:1,cache_write:12.5},"neon/inkling":{input:1,output:4.05,cache_read:.17},"neon/claude-opus-4-8":{input:5,output:25,cache_read:.5,cache_write:6.25},"neon/claude-sonnet-5":{input:2,output:10,cache_read:.2,cache_write:2.5},"neon/claude-opus-4-6":{input:5,output:25,cache_read:.5,cache_write:6.25},"neon/gemini-3-1-flash-lite":{input:.25,output:1.5,cache_read:.025,input_audio:.5},"neon/gpt-5-5":{input:5,output:30,cache_read:.5,tiers:[{input:10,output:45,cache_read:1,tier:{type:"context",size:272e3}}],context_over_200k:{input:10,output:45,cache_read:1}},"neon/grok-4-6":{input:2,output:6,cache_read:.5},"neon/qwen35-122b-a10b":{input:.22,output:2.2},"neon/gemini-3-6-flash":{input:1.5,output:7.5,cache_read:.15,input_audio:1.5},"neon/meta-llama-3-3-70b-instruct":{input:.5,output:1.5},"neon/gpt-5-2":{input:1.75,output:14,cache_read:.175},"neon/claude-sonnet-4-6":{input:3,output:15,cache_read:.3,cache_write:3.75},"neon/gpt-5-3-codex":{input:1.75,output:14,cache_read:.175},"neon/gemma-3-12b":{input:.15,output:.5},"neon/gemini-3-5-flash-lite":{input:.3,output:2.5,cache_read:.03},"neon/gemini-3-5-flash":{input:1.5,output:9,cache_read:.15,input_audio:1.5},"neon/gpt-5-1":{input:1.25,output:10,cache_read:.125},"neon/gpt-oss-120b":{input:.15,output:.6},"neon/claude-opus-4-7":{input:5,output:25,cache_read:.5,cache_write:6.25},"neon/gpt-5":{input:1.25,output:10,cache_read:.125},"neon/meta-llama-3-1-8b-instruct":{input:.15,output:.45},"aihubmix/gpt-5.4":{input:2.5,output:15,cache_read:.25,tiers:[{input:5,output:22.5,cache_read:.5,tier:{type:"context",size:272e3}}],context_over_200k:{input:5,output:22.5,cache_read:.5}},"aihubmix/mimo-v2.6-pro":{input:.48,output:.96,cache_read:.00384},"aihubmix/qwen3.7-max":{input:1.69,output:5.07,cache_read:.169,cache_write:2.1125},"aihubmix/muse-spark-1.3":{input:1.375,output:4.675,cache_read:.165},"aihubmix/deep-deepseek-v4-pro":{input:.478,output:.956,cache_read:.004302},"aihubmix/grok-4.7":{input:2.2,output:6.6,cache_read:.55,tiers:[{input:4.4,output:13.2,cache_read:1.1,tier:{type:"context",size:2e5}}],context_over_200k:{input:4.4,output:13.2,cache_read:1.1}},"aihubmix/qwen3.8-2.4t-a95b":{input:2,output:6,cache_read:.5},"aihubmix/gpt-5.2-codex":{input:1.75,output:14,cache_read:.175},"aihubmix/gpt-5.1-codex":{input:1.25,output:10,cache_read:.125},"aihubmix/glm-5v-turbo":{input:.7042,output:3.09848,cache_read:.169008},"aihubmix/glm-5.3-flash":{input:.11268,output:.39438,cache_read:.02817},"aihubmix/deepseek-v4-flash-0731":{input:.142,output:.284,cache_read:.0284},"aihubmix/qwen3.8-max":{input:1.69,output:5.07,cache_read:.169,cache_write:2.1125},"aihubmix/kimi-k3":{input:3,output:15,cache_read:.3},"aihubmix/doubao-seed-2-0-lite-260428":{input:.08,output:.51,cache_read:.01692,input_audio:1.269,tiers:[{input:.13,output:.76,cache_read:.02536,input_audio:1.902,tier:{type:"context",size:32e3}},{input:.25,output:1.52,cache_read:.05072,input_audio:3.804,tier:{type:"context",size:128e3}}]},"aihubmix/claude-sonnet-4-6-think":{input:3,output:15,cache_read:.3,cache_write:3.75,tiers:[{input:6,output:22.5,cache_read:.6,cache_write:7.5,tier:{type:"context",size:2e5}}],context_over_200k:{input:6,output:22.5,cache_read:.6,cache_write:7.5}},"aihubmix/deepseek-v4-flash-0731-fast":{input:.28,output:1.4,cache_read:.07},"aihubmix/hy3-preview":{input:.17,output:.566661,cache_read:.051},"aihubmix/alicloud-deepseek-v4-pro":{input:1.69,output:3.38,cache_read:.13},"aihubmix/zai-glm-5.1":{input:.845,output:3.38,cache_read:.183112},"aihubmix/deepseek-v4.1-flash":{input:.155,output:.62,cache_read:.0031},"aihubmix/gpt-5.3-codex":{input:1.75,output:14,cache_read:.175},"aihubmix/coding-minimax-m2.7-highspeed":{input:.2,output:.2},"aihubmix/muse-spark-1.1":{input:1.375,output:4.675},"aihubmix/deepseek-v4-flash-vision-exp":{input:.155,output:.62,cache_read:.0031},"aihubmix/kimi-k2.7-code-highspeed":{input:1.9,output:7.999,cache_read:.32167},"aihubmix/qwen3.7-flash":{input:.0282,output:.1128,cache_read:.00564,cache_write:.03525},"aihubmix/kimi-k2.6":{input:.95,output:4,cache_read:.16},"aihubmix/claude-opus-5-5":{input:4,output:20,cache_read:.2,cache_write:5},"aihubmix/claude-opus-4-8-think":{input:5,output:25,cache_read:.5,cache_write:6.25},"aihubmix/doubao-seed-2-0-pro":{input:.48,output:2.41,cache_read:.09644,tiers:[{input:.72,output:3.62,cache_read:.144656,tier:{type:"context",size:32e3}},{input:1.45,output:7.23,cache_read:.28932,tier:{type:"context",size:128e3}}]},"aihubmix/xiaomi-mimo-v2.5":{input:.44,output:2.2,cache_read:.088,tiers:[{input:.88,output:4.4,cache_read:.176,tier:{type:"context",size:256e3}}],context_over_200k:{input:.88,output:4.4,cache_read:.176}},"aihubmix/claude-fable-5-1":{input:11,output:55,cache_read:.275,cache_write:13.75},"aihubmix/gemini-3.6-flash":{input:1.5,output:7.5,cache_read:.15},"aihubmix/step-5-preview":{input:1.08,output:3.0888,cache_read:.054},"aihubmix/longcat-2.0":{input:.7746,output:3.0984,cache_read:.015492},"aihubmix/mimo-v2.6-pro-ultraspeed":{input:4.8,output:9.6,cache_read:.0384},"aihubmix/doubao-seed-2-0-code-preview":{input:.48,output:2.41,cache_read:.09644,tiers:[{input:.72,output:3.62,cache_read:.144656,tier:{type:"context",size:32e3}},{input:1.45,output:7.23,cache_read:.28932,tier:{type:"context",size:128e3}}]},"aihubmix/grok-4.3":{input:1.25,output:2.5,cache_read:.2,tiers:[{input:2.5,output:5,cache_read:.4,tier:{type:"context",size:2e5}}],context_over_200k:{input:2.5,output:5,cache_read:.4}},"aihubmix/qwen3.8-omni-flash":{input:.1126,output:.380025,cache_read:.014075,cache_write:.175937},"aihubmix/doubao-seed-2-0-mini-260428":{input:.03,output:.28,cache_read:.00564,input_audio:.423,tiers:[{input:.06,output:.56,cache_read:.01128,input_audio:.846,tier:{type:"context",size:32e3}},{input:.11,output:1.13,cache_read:.02256,input_audio:1.692,tier:{type:"context",size:128e3}}]},"aihubmix/gemini-3.5-flash-lite":{input:.3,output:2.499999,cache_read:.03},"aihubmix/gemini-3.1-flash-image":{input:.5,output:3},"aihubmix/gpt-6-astra":{input:10,output:50,cache_read:1,cache_write:12.5,tiers:[{input:20,output:75,cache_read:2,cache_write:25,tier:{type:"context",size:272e3}}],context_over_200k:{input:20,output:75,cache_read:2,cache_write:25}},"aihubmix/gemini-3.1-pro-preview":{input:2,output:12,cache_read:.2,tiers:[{input:4,output:18,cache_read:.4,tier:{type:"context",size:2e5}}],context_over_200k:{input:4,output:18,cache_read:.4}},"aihubmix/grok-4.5":{input:2,output:6,cache_read:.5},"aihubmix/kimi-k2.5":{input:.6,output:3,cache_read:.1},"aihubmix/gpt-5.1":{input:1.25,output:10,cache_read:.13},"aihubmix/claude-opus-5":{input:5,output:25,cache_read:.5,cache_write:6.25},"aihubmix/coding-minimax-m2.7":{input:.2,output:.2},"aihubmix/minimax-m2.7":{input:.3,output:1.2,cache_read:.06,cache_write:.375},"aihubmix/gemini-3.5-flash":{input:1.5,output:9,cache_read:1.5},"aihubmix/gemini-2.5-pro":{input:1.25,output:10,cache_read:.125,tiers:[{input:2.5,output:15,cache_read:.25,tier:{type:"context",size:2e5}}],context_over_200k:{input:2.5,output:15,cache_read:.25}},"aihubmix/deep-deepseek-v4-flash":{input:.154,output:.308,cache_read:.0308},"aihubmix/qwen3.6-flash":{input:.17,output:1.01,cache_read:.0169,cache_write:.21125,tiers:[{input:.68,output:4.06,cache_read:.0676,cache_write:.845,tier:{type:"context",size:256e3}}],context_over_200k:{input:.68,output:4.06,cache_read:.0676,cache_write:.845}},"aihubmix/coding-glm-5.1":{input:.06,output:.22,cache_read:.013},"aihubmix/gemini-2.5-flash":{input:.3,output:2.5,cache_read:.03,input_audio:1},"aihubmix/claude-fable-5":{input:11,output:55,cache_read:1.1,cache_write:13.75},"aihubmix/deepseek-v4-pro-0813":{input:.6918,output:2.0754,cache_read:.023058},"aihubmix/muse-spark-1.2":{input:1.375,output:4.675},"aihubmix/gemini-3.1-flash-lite-image":{input:.25,output:1.5,cache_read:.025},"aihubmix/mimo-v2.6-flash":{input:.155,output:.31,cache_read:.0031},"aihubmix/gpt-5.4-mini":{input:.75,output:4.5,cache_read:.075},"aihubmix/minimax-m3":{input:.288,output:1.152},"aihubmix/gpt-5.6-luna":{input:1,output:6,cache_read:.1,cache_write:1.25},"aihubmix/qwen3.8-flash":{input:.1126,output:.380025,cache_read:.014075,cache_write:.175937},"aihubmix/claude-opus-4-6-think":{input:5,output:25,cache_read:.5,cache_write:6.25,tiers:[{input:10,output:37.5,cache_read:1,cache_write:12.5,tier:{type:"context",size:2e5}}],context_over_200k:{input:10,output:37.5,cache_read:1,cache_write:12.5}},"aihubmix/coding-xiaomi-mimo-v2.5":{input:.08,output:.4,cache_read:.016,tiers:[{input:.16,output:.8,cache_read:.032,tier:{type:"context",size:256e3}}],context_over_200k:{input:.16,output:.8,cache_read:.032}},"aihubmix/gpt-5.2":{input:1.75,output:14,cache_read:.175},"aihubmix/claude-opus-4-8":{input:5,output:25,cache_read:.5,cache_write:6.25},"aihubmix/gpt-5.5":{input:5,output:30,cache_read:.5,tiers:[{input:10,output:45,cache_read:1,tier:{type:"context",size:272e3}}],context_over_200k:{input:10,output:45,cache_read:1}},"aihubmix/claude-sonnet-5":{input:2,output:10,cache_read:.2,cache_write:2.5},"aihubmix/qwen3.6-max-preview":{input:1.27,output:7.61,cache_read:.1268,cache_write:1.585,tiers:[{input:2.11,output:12.67,cache_read:.2112,cache_write:2.64,tier:{type:"context",size:128e3}}]},"aihubmix/claude-opus-4-6":{input:5,output:25,cache_read:.5,cache_write:6.25,tiers:[{input:10,output:37.5,cache_read:1,cache_write:12.5,tier:{type:"context",size:2e5}}],context_over_200k:{input:10,output:37.5,cache_read:1,cache_write:12.5}},"aihubmix/gemini-3.7-flash":{input:.75,output:3.75,cache_read:.075},"aihubmix/glm-5.2":{input:1.1268,output:3.9438,cache_read:.2817},"aihubmix/hy3":{input:.1562,output:.6248,cache_read:.03905},"aihubmix/gemini-3.1-pro-preview-customtools":{input:2,output:12,cache_read:.2,tiers:[{input:4,output:18,cache_read:.4,tier:{type:"context",size:2e5}}],context_over_200k:{input:4,output:18,cache_read:.4}},"aihubmix/gemini-3-flash-preview":{input:.5,output:3,cache_read:.05,tiers:[{input:.5,output:3,cache_read:.05,tier:{type:"context",size:2e5}}],context_over_200k:{input:.5,output:3,cache_read:.05}},"aihubmix/grok-build-0.1":{input:1,output:2,cache_read:.2},"aihubmix/claude-opus-4-7-think":{input:5,output:25,cache_read:.5,cache_write:6.25,tiers:[{input:10,output:37.5,cache_read:1,cache_write:12.5,tier:{type:"context",size:2e5}}],context_over_200k:{input:10,output:37.5,cache_read:1,cache_write:12.5}},"aihubmix/alicloud-deepseek-v4-flash":{input:.14,output:.28,cache_read:.028},"aihubmix/coding-xiaomi-mimo-v2.5-pro":{input:.2,output:.6,cache_read:.04,tiers:[{input:.4,output:1.2,cache_read:.08,tier:{type:"context",size:256e3}}],context_over_200k:{input:.4,output:1.2,cache_read:.08}},"aihubmix/gemini-3.8-flash":{input:.75,output:3.75,cache_read:.075},"aihubmix/gpt-6-luna":{input:.1,output:.5,cache_read:.01,cache_write:.125,tiers:[{input:.2,output:.75,cache_read:.02,cache_write:.25,tier:{type:"context",size:272e3}}],context_over_200k:{input:.2,output:.75,cache_read:.02,cache_write:.25}},"aihubmix/step-3.7-flash":{input:.22,output:1.32,cache_read:.044},"aihubmix/alicloud-glm-5.1":{input:.84,output:3.38,cache_read:.169,cache_write:1.05625},"aihubmix/claude-sonnet-4-6":{input:3,output:15,cache_read:.3,cache_write:3.75,tiers:[{input:6,output:22.5,cache_read:.6,cache_write:7.5,tier:{type:"context",size:2e5}}],context_over_200k:{input:6,output:22.5,cache_read:.6,cache_write:7.5}},"aihubmix/qwen3.6-plus":{input:.28,output:1.69,cache_read:.0282,cache_write:.3525,tiers:[{input:1.13,output:6.77,cache_read:.1128,cache_write:1.41,tier:{type:"context",size:256e3}}],context_over_200k:{input:1.13,output:6.77,cache_read:.1128,cache_write:1.41}},"aihubmix/gpt-5.6-terra":{input:2.5,output:15,cache_read:.25,cache_write:3.125},"aihubmix/hy4-preview":{input:.845,output:2.535,cache_read:.04225},"aihubmix/gpt-5.1-codex-mini":{input:.25,output:2,cache_read:.025},"aihubmix/glm-5.3":{input:1.1268,output:3.9438,cache_read:.2817},"aihubmix/claude-opus-4-7":{input:5,output:25,cache_read:.5,cache_write:6.25,tiers:[{input:10,output:37.5,cache_read:1,cache_write:12.5,tier:{type:"context",size:2e5}}],context_over_200k:{input:10,output:37.5,cache_read:1,cache_write:12.5}},"aihubmix/kimi-k2.7-code":{input:.95,output:3.9995,cache_read:.160835},"aihubmix/grok-4.6":{input:2,output:6,cache_read:.5},"aihubmix/xiaomi-mimo-v2.5-pro":{input:1.1,output:3.3,cache_read:.22,tiers:[{input:2.2,output:6.6,cache_read:.44,tier:{type:"context",size:256e3}}],context_over_200k:{input:2.2,output:6.6,cache_read:.44}},"aihubmix/qwen3.7-plus":{input:.282,output:1.128,cache_read:.0564,cache_write:.3525},"aihubmix/gpt-5.6-sol":{input:5,output:30,cache_read:.5,cache_write:6.25},"aihubmix/gpt-6-sol":{input:2,output:10,cache_read:.2,cache_write:2.5,tiers:[{input:4,output:15,cache_read:.4,cache_write:5,tier:{type:"context",size:272e3}}],context_over_200k:{input:4,output:15,cache_read:.4,cache_write:5}},"aihubmix/gemini-3.1-flash-lite":{input:.25,output:1.5,cache_read:.025,cache_write:1},"merge-gateway/zai/glm-4.5":{input:.6,output:2.2,cache_read:.11,cache_write:0},"merge-gateway/zai/glm-5.3-flash":{input:.015,output:.05,cache_read:.003},"merge-gateway/zai/glm-4.6":{input:.6,output:2.2,cache_read:.11,cache_write:0},"merge-gateway/zai/glm-5":{input:1,output:3.2,cache_read:.2,cache_write:0},"merge-gateway/zai/glm-4.5v":{input:.6,output:1.8,cache_read:.11,cache_write:0},"merge-gateway/zai/glm-4.7-flash":{input:.07,output:.4},"merge-gateway/zai/glm-4.7":{input:.6,output:2.2,cache_read:.11,cache_write:0},"merge-gateway/zai/glm-5.2":{input:1.05,output:3.3,cache_read:.195},"merge-gateway/zai/glm-5.1":{input:1.4,output:4.4,cache_read:.26,cache_write:0},"merge-gateway/zai/glm-4.7-flashx":{input:.07,output:.4,cache_read:.01,cache_write:0},"merge-gateway/zai/glm-5-turbo":{input:1.2,output:4,cache_read:.24,cache_write:0},"merge-gateway/zai/glm-4.5-air":{input:.2,output:1.1,cache_read:.03,cache_write:0},"merge-gateway/zai/glm-5.3":{input:.7,output:2.2,cache_read:.13},"merge-gateway/anthropic/claude-3-7-sonnet-20250219":{input:3,output:15,cache_read:.3,cache_write:3.75},"merge-gateway/anthropic/claude-opus-5-5":{input:4,output:20,cache_read:.2,cache_write:5},"merge-gateway/anthropic/claude-opus-4-20250514":{input:15,output:75,cache_read:1.5,cache_write:18.75},"merge-gateway/anthropic/claude-fable-5-1":{input:10,output:50,cache_read:.25,cache_write:12.5},"merge-gateway/anthropic/claude-opus-4-1-20250805":{input:15,output:75,cache_read:1.5,cache_write:18.75},"merge-gateway/anthropic/claude-opus-4-5-20251101":{input:5,output:25,cache_read:.5,cache_write:6.25},"merge-gateway/anthropic/claude-opus-5":{input:5,output:25,cache_read:.5,cache_write:6.25},"merge-gateway/anthropic/claude-fable-5":{input:10,output:50,cache_read:1,cache_write:12.5},"merge-gateway/anthropic/claude-opus-4-8":{input:5,output:25,cache_read:.5,cache_write:6.25},"merge-gateway/anthropic/claude-sonnet-4-5-20250929":{input:3,output:15,cache_read:.3,cache_write:3.75},"merge-gateway/anthropic/claude-sonnet-5":{input:3,output:15,cache_read:.2,cache_write:2.5},"merge-gateway/anthropic/claude-opus-4-6":{input:5,output:25,cache_read:.5,cache_write:6.25},"merge-gateway/anthropic/claude-haiku-4-5-20251001":{input:1,output:5,cache_read:.1,cache_write:1.25},"merge-gateway/anthropic/claude-sonnet-4-6":{input:3,output:15,cache_read:.3,cache_write:3.75},"merge-gateway/anthropic/claude-sonnet-4-20250514":{input:3,output:15,cache_read:.3,cache_write:3.75},"merge-gateway/anthropic/claude-opus-4-7":{input:5,output:25,cache_read:.5,cache_write:6.25},"merge-gateway/cohere/command-r-08-2024":{input:.15,output:.6},"merge-gateway/cohere/command-a-03-2025":{input:2.5,output:10},"merge-gateway/cohere/command-r7b-12-2024":{input:.0375,output:.15},"merge-gateway/cohere/command-r-plus-08-2024":{input:2.5,output:10},"merge-gateway/deepseek/deepseek-v4-flash-0731":{input:.035,output:.07,cache_read:.007},"merge-gateway/deepseek/deepseek-v4-flash-0423":{input:.139,output:.278},"merge-gateway/deepseek/deepseek-v4-flash-0731-fast":{input:.28,output:.56,cache_read:.07},"merge-gateway/deepseek/deepseek-v4.1-flash":{input:.15,output:.6,cache_read:.003},"merge-gateway/deepseek/deepseek-v3":{input:.58,output:1.68},"merge-gateway/deepseek/deepseek-v4-pro-0813":{input:1.74,output:3.48,cache_read:.003625},"merge-gateway/deepseek/deepseek-v4-pro-0423":{input:1.65,output:3.3},"merge-gateway/deepseek/deepseek-v3.1":{input:.5,output:1.5},"merge-gateway/deepseek/deepseek-r1":{input:1.35,output:5.4},"merge-gateway/deepseek/deepseek-v4-pro":{input:1.74,output:3.48,cache_read:.145},"merge-gateway/deepseek/deepseek-v3.2":{input:.28,output:.45,cache_read:.14},"merge-gateway/deepseek/deepseek-v4-flash":{input:.035,output:.07,cache_read:.007},"merge-gateway/thinkingmachines/inkling":{input:1,output:4.05,cache_read:.17},"merge-gateway/meta/muse-spark-1.1":{input:1.25,output:4.25,cache_read:.15},"merge-gateway/meta/llama-3.3-70b-instruct":{input:.22,output:.5,cache_read:.11},"merge-gateway/meta/muse-spark-1.2":{input:1.25,output:4.25,cache_read:.15},"merge-gateway/meta/llama-3.1-8b-instruct":{input:.22,output:.22},"merge-gateway/meta/llama-3.1-70b-instruct":{input:.99,output:.99},"merge-gateway/bytedance/dola-seed-2.0-code-preview":{input:.5,output:3},"merge-gateway/bytedance/dola-seed-2.0-code":{input:.4,output:2.4},"merge-gateway/bytedance/dola-seed-2.0-mini":{input:.1,output:.4},"merge-gateway/bytedance/dola-seed-2.0-lite":{input:.25,output:2},"merge-gateway/bytedance/dola-seed-2.0-pro":{input:.5,output:3},"merge-gateway/google/gemini-flash-latest":{input:1.5,output:9,cache_read:.15,input_audio:1.5},"merge-gateway/google/gemma-4-31b-it":{input:.14,output:.4},"merge-gateway/google/gemma-3-27b-it":{input:.08,output:.45,cache_read:.04},"merge-gateway/google/gemini-3-pro-preview":{input:2,output:12,cache_read:.2,tiers:[{input:4,output:18,cache_read:.4,tier:{type:"context",size:2e5}}],context_over_200k:{input:4,output:18,cache_read:.4}},"merge-gateway/google/gemini-2.5-flash-image":{input:.3,output:2.5},"merge-gateway/google/gemini-flash-lite-latest":{input:.25,output:1.5,cache_read:.025,input_audio:.5},"merge-gateway/google/gemini-3.6-flash":{input:1.5,output:7.5,cache_read:.15},"merge-gateway/google/gemma-4-26b-a4b-it":{input:.13,output:.4},"merge-gateway/google/gemini-3.5-flash-lite":{input:.3,output:2.5,cache_read:.03},"merge-gateway/google/gemini-3.1-flash-image":{input:.5,output:3},"merge-gateway/google/gemini-3.1-pro-preview":{input:2,output:12,cache_read:.2,tiers:[{input:4,output:18,cache_read:.4,tier:{type:"context",size:2e5}}],context_over_200k:{input:4,output:18,cache_read:.4}},"merge-gateway/google/gemma-3-12b-it":{input:.09,output:.29},"merge-gateway/google/gemini-2.5-computer-use-preview-10-2025":{input:1.25,output:10},"merge-gateway/google/gemini-3.5-flash":{input:1.5,output:9,cache_read:.15,input_audio:1.5},"merge-gateway/google/gemini-2.5-pro":{input:1.25,output:10,cache_read:.125,tiers:[{input:2.5,output:15,cache_read:.25,tier:{type:"context",size:2e5}}],context_over_200k:{input:2.5,output:15,cache_read:.25}},"merge-gateway/google/gemini-3-pro-image":{input:2,output:12},"merge-gateway/google/gemini-2.5-flash":{input:.3,output:2.5,cache_read:.03,input_audio:1},"merge-gateway/google/gemini-3.7-flash":{input:.75,output:3.75,cache_read:.075},"merge-gateway/google/gemini-3.1-pro-preview-customtools":{input:2,output:12,cache_read:.2,tiers:[{input:4,output:18,cache_read:.4,tier:{type:"context",size:2e5}}],context_over_200k:{input:4,output:18,cache_read:.4}},"merge-gateway/google/gemini-3-flash-preview":{input:.5,output:3,cache_read:.05,input_audio:1},"merge-gateway/google/gemini-3.8-flash":{input:.75,output:3.75,cache_read:.075},"merge-gateway/google/gemma-3-4b-it":{input:.04,output:.08},"merge-gateway/google/gemini-2.5-flash-lite":{input:.1,output:.4,cache_read:.01,input_audio:.3},"merge-gateway/google/gemini-embedding-001":{input:.15,output:0},"merge-gateway/google/gemini-3.1-flash-lite-preview":{input:.25,output:1.5,cache_read:.025,input_audio:.5},"merge-gateway/google/gemini-3.1-flash-lite":{input:.25,output:1.5,cache_read:.025,input_audio:.5},"merge-gateway/writer/palmyra-x4":{input:2.5,output:10},"merge-gateway/writer/palmyra-x5":{input:.6,output:6},"merge-gateway/xai/grok-4.7":{input:2,output:6,cache_read:.5},"merge-gateway/xai/grok-4.3":{input:1.25,output:2.5,cache_read:.2,tiers:[{input:2.5,output:5,cache_read:.4,tier:{type:"context",size:2e5}}],context_over_200k:{input:2.5,output:5,cache_read:.4}},"merge-gateway/xai/grok-4.20-0309-reasoning":{input:1.25,output:2.5,cache_read:.2,tiers:[{input:2.5,output:5,cache_read:.4,tier:{type:"context",size:2e5}}],context_over_200k:{input:2.5,output:5,cache_read:.4}},"merge-gateway/xai/grok-4.5":{input:2,output:6,cache_read:.5},"merge-gateway/xai/grok-4.20-0309-non-reasoning":{input:1.25,output:2.5,cache_read:.2},"merge-gateway/xai/grok-build-0.1":{input:1,output:2,cache_read:.2},"merge-gateway/xai/grok-4.6":{input:2,output:6,cache_read:.5},"merge-gateway/sakana/fugu-ultra":{input:5,output:30,cache_read:.5},"merge-gateway/sakana/sakana-namazu":{input:.95,output:4,cache_read:.15},"merge-gateway/moonshotai/kimi-k2-thinking":{input:.6,output:2.5},"merge-gateway/nvidia/nemotron-nano-9b-v2":{input:.06,output:.23},"merge-gateway/minimax/minimax-m2.5":{input:.3,output:1.2,cache_read:.03,cache_write:.375},"merge-gateway/minimax/minimax-m2.7":{input:.3,output:1.2,cache_read:.06,cache_write:.375},"merge-gateway/minimax/minimax-m3":{input:.3,output:1.2,cache_read:.06},"merge-gateway/minimax/minimax-m2.7-highspeed":{input:.6,output:2.4,cache_read:.06,cache_write:.375},"merge-gateway/minimax/minimax-m2.5-highspeed":{input:.6,output:2.4,cache_read:.06,cache_write:.375},"merge-gateway/minimax/minimax-m2.1":{input:.3,output:1.2,cache_read:.03,cache_write:.375},"merge-gateway/minimax/minimax-m2":{input:.3,output:1.2,cache_read:.03,cache_write:.375},"merge-gateway/mistral/codestral-latest":{input:.3,output:.9},"merge-gateway/mistral/mistral-large-2411":{input:2,output:6},"merge-gateway/mistral/mistral-large-latest":{input:.5,output:1.5},"merge-gateway/mistral/mistral-small-latest":{input:.15,output:.6},"merge-gateway/mistral/devstral-medium-latest":{input:.4,output:2},"merge-gateway/mistral/devstral-2512":{input:.4,output:2,cache_read:.04},"merge-gateway/mistral/mistral-medium-2505":{input:.4,output:2,cache_read:.04},"merge-gateway/mistral/magistral-medium-latest":{input:2,output:5},"merge-gateway/mistral/devstral-medium-2507":{input:.4,output:2},"merge-gateway/mistral/mistral-large-2512":{input:.5,output:1.5,cache_read:.05},"merge-gateway/mistral/devstral-small-2507":{input:.1,output:.3},"merge-gateway/mistral/pixtral-large-latest":{input:2,output:6},"merge-gateway/mistral/mistral-medium-latest":{input:.4,output:2},"merge-gateway/qwen/qwen-flash":{input:.022,output:.216,cache_read:.0044},"merge-gateway/qwen/qwen3.5-flash":{input:.029,output:.287,cache_read:.0058},"merge-gateway/qwen/qwen3-vl-235b-a22b-instruct":{input:.287,output:1.147,cache_read:.15785},"merge-gateway/qwen/qwen3.7-max":{input:.825,output:2.4755,cache_read:.165},"merge-gateway/qwen/qwen3-vl-235b-a22b-thinking":{input:.287,output:2.867,cache_read:.0574},"merge-gateway/qwen/qwen3.8-2.4t-a95b":{input:2.5,output:6.25,cache_read:.5},"merge-gateway/qwen/qwen3-vl-plus":{input:.143,output:1.434,cache_read:.0286},"merge-gateway/qwen/qwen3.5-27b":{input:.086,output:.688,cache_read:.0172},"merge-gateway/qwen/qwen3-235b-a22b-instruct-2507":{input:.1,output:.6,cache_read:.05},"merge-gateway/qwen/qwen3-next-80b-a3b-thinking":{input:.15,output:1.2},"merge-gateway/qwen/qwen3.8-max":{input:2,output:6,cache_read:.25},"merge-gateway/qwen/qwen3-coder-next":{input:.15,output:.8,cache_read:.075},"merge-gateway/qwen/qwen3.5-plus":{input:.115,output:.688,cache_read:.023},"merge-gateway/qwen/qwen3-32b":{input:.15,output:.6},"merge-gateway/qwen/qwen-plus":{input:.115,output:.287,cache_read:.023},"merge-gateway/qwen/qwen3-max":{input:.359,output:1.434,cache_read:.0718},"merge-gateway/qwen/qwen3-coder-480b-a35b-instruct":{input:.22,output:1.8},"merge-gateway/qwen/qwen3-235b-a22b":{input:.287,output:1.147,cache_read:.0574},"merge-gateway/qwen/qwen3.5-122b-a10b":{input:.115,output:.917,cache_read:.023},"merge-gateway/qwen/qwen3.6-35b-a3b":{input:.248,output:1.485,cache_read:.0496},"merge-gateway/qwen/qwen3-next-80b-a3b-instruct":{input:.144,output:.574,cache_read:.0288},"merge-gateway/qwen/qwen3.6-flash":{input:.165,output:.99,cache_read:.033},"merge-gateway/qwen/qwen3-coder-flash":{input:.144,output:.574,cache_read:.0288},"merge-gateway/qwen/qwen3-coder-plus":{input:.574,output:2.294,cache_read:.1148},"merge-gateway/qwen/qwen3.5-9b":{input:.09,output:.13},"merge-gateway/qwen/qwen3.5-35b-a3b":{input:.057,output:.459,cache_read:.020357},"merge-gateway/qwen/qwen3.6-max-preview":{input:1.31,output:7.88},"merge-gateway/qwen/qwen3-30b-a3b":{input:.108,output:1.076,cache_read:.0216},"merge-gateway/qwen/qwen3.5-397b-a17b":{input:.172,output:1.032,cache_read:.0344},"merge-gateway/qwen/qwen3.6-27b":{input:.289,output:2.4},"merge-gateway/qwen/qwen3.6-plus":{input:.276,output:1.651,cache_read:.0552},"merge-gateway/qwen/qwen3.7-plus":{input:.4,output:1.6},"merge-gateway/openai/gpt-5.4":{input:2.5,output:15,cache_read:.25,tiers:[{input:5,output:22.5,cache_read:.5,tier:{type:"context",size:272e3}}],context_over_200k:{input:5,output:22.5,cache_read:.5}},"merge-gateway/openai/gpt-oss-safeguard-120b":{input:.15,output:.6},"merge-gateway/openai/gpt-3.5-turbo":{input:.5,output:1.5},"merge-gateway/openai/gpt-5.4-nano":{input:.2,output:1.25,cache_read:.02},"merge-gateway/openai/gpt-4o-2024-05-13":{input:5,output:15},"merge-gateway/openai/gpt-4o":{input:2.5,output:10,cache_read:1.25},"merge-gateway/openai/gpt-5-mini":{input:.25,output:2,cache_read:.025},"merge-gateway/openai/o4-mini":{input:1.1,output:4.4,cache_read:.275},"merge-gateway/openai/o3-mini":{input:1.1,output:4.4,cache_read:.55},"merge-gateway/openai/gpt-4":{input:30,output:60},"merge-gateway/openai/gpt-4.1-nano":{input:.1,output:.4,cache_read:.025},"merge-gateway/openai/gpt-5-nano":{input:.05,output:.4,cache_read:.005},"merge-gateway/openai/gpt-5.2-chat-latest":{input:1.75,output:14,cache_read:.175},"merge-gateway/openai/gpt-5.1-chat-latest":{input:1.25,output:10,cache_read:.125},"merge-gateway/openai/o1":{input:15,output:60,cache_read:7.5},"merge-gateway/openai/gpt-5-chat-latest":{input:1.25,output:10,cache_read:.125},"merge-gateway/openai/gpt-4o-2024-08-06":{input:2.5,output:10,cache_read:1.25},"merge-gateway/openai/gpt-6-astra":{input:10,output:50,cache_read:1,cache_write:12.5},"merge-gateway/openai/gpt-5.1":{input:1.25,output:10,cache_read:.125},"merge-gateway/openai/gpt-4o-mini":{input:.15,output:.6,cache_read:.075},"merge-gateway/openai/gpt-oss-20b":{input:.04,output:.2,cache_read:.02},"merge-gateway/openai/gpt-oss-safeguard-20b":{input:.07,output:.2,cache_read:0,cache_write:0},"merge-gateway/openai/gpt-5.4-mini":{input:.75,output:4.5,cache_read:.075},"merge-gateway/openai/gpt-5.6-luna":{input:.2,output:1.2,cache_read:.02,cache_write:.25},"merge-gateway/openai/gpt-5.2":{input:1.75,output:14,cache_read:.175},"merge-gateway/openai/gpt-5.5":{input:5,output:30,cache_read:.5,tiers:[{input:10,output:45,cache_read:1,tier:{type:"context",size:272e3}}],context_over_200k:{input:10,output:45,cache_read:1}},"merge-gateway/openai/gpt-4.1":{input:2,output:8,cache_read:.5},"merge-gateway/openai/gpt-4o-2024-11-20":{input:2.5,output:10,cache_read:1.25},"merge-gateway/openai/gpt-4.1-mini":{input:.4,output:1.6,cache_read:.1},"merge-gateway/openai/gpt-6-luna":{input:.1,output:.5,cache_read:.01,cache_write:.125},"merge-gateway/openai/gpt-5.3-chat-latest":{input:1.75,output:14,cache_read:.175},"merge-gateway/openai/gpt-5.6-terra":{input:2,output:12,cache_read:.2,cache_write:2.5},"merge-gateway/openai/gpt-4-turbo":{input:10,output:30},"merge-gateway/openai/gpt-oss-120b":{input:.09,output:.36},"merge-gateway/openai/o3":{input:2,output:8,cache_read:.5},"merge-gateway/openai/gpt-5":{input:1.25,output:10,cache_read:.125},"merge-gateway/openai/gpt-5.6-sol":{input:5,output:30,cache_read:.5,cache_write:5},"merge-gateway/openai/gpt-6-sol":{input:2,output:10,cache_read:.2,cache_write:2.5},"merge-gateway/moonshot/kimi-k3":{input:2.9,output:14,cache_read:.3},"merge-gateway/moonshot/kimi-k2.7-code-highspeed":{input:1.9,output:8,cache_read:.38},"merge-gateway/moonshot/kimi-k2.6":{input:.95,output:4,cache_read:.16},"merge-gateway/moonshot/kimi-k2.5":{input:.6,output:3,cache_read:.1},"merge-gateway/moonshot/kimi-k2.7-code":{input:.95,output:4,cache_read:.19},"opper/gpt-5.4":{input:2.5,output:15,cache_read:.25,tiers:[{input:5,output:22.5,cache_read:.5,tier:{type:"context",size:272e3}}],context_over_200k:{input:5,output:22.5,cache_read:.5}},"opper/claude-haiku-4-5":{input:1.1,output:5.5,cache_read:.11,cache_write:1.375},"opper/gpt-5.4-pro":{input:30,output:180,tiers:[{input:60,output:270,tier:{type:"context",size:272e3}}],context_over_200k:{input:60,output:270}},"opper/gemma-4-31b-it":{input:.46488,output:2.44062},"opper/muse-spark-1.3":{input:1.25,output:4.25,cache_read:.15},"opper/qwen3.8-27b":{input:.5811,output:3},"opper/gpt-5.5-pro":{input:30,output:180},"opper/gpt-5.4-nano":{input:.2,output:1.25,cache_read:.02},"opper/qwen3.8-2.4t-a95b":{input:2.5,output:6,cache_read:.63},"opper/glm-5.3-flash":{input:.2,output:.5,cache_read:.07},"opper/qwen3.8-max":{input:2,output:6,cache_read:.25},"opper/kimi-k3":{input:3,output:15},"opper/qwen3-coder-next":{input:.5811,output:2.3244},"opper/claude-opus-4-5":{input:5,output:25,cache_read:.5,cache_write:6.25},"opper/gpt-5.3-codex":{input:1.75,output:14,cache_read:.175},"opper/claude-sonnet-4-5":{input:3.3,output:16.5,cache_read:.33,cache_write:4.125,tiers:[{input:6.6,output:24.75,cache_read:.66,cache_write:8.25,tier:{type:"context",size:2e5}}],context_over_200k:{input:6.6,output:24.75,cache_read:.66,cache_write:8.25}},"opper/claude-fable-5-1":{input:10,output:50,cache_read:.25,cache_write:12.5},"opper/devstral-2512":{input:.4,output:2},"opper/sonar-pro":{input:3,output:15},"opper/grok-4.3":{input:1.25,output:2.5,cache_read:.2},"opper/gemini-3.5-flash-lite":{input:.3,output:2.5,cache_read:.03},"opper/gpt-6-astra":{input:10,output:50,cache_read:1,cache_write:12.5,tiers:[{input:20,output:75,cache_read:2,cache_write:25,tier:{type:"context",size:272e3}}],context_over_200k:{input:20,output:75,cache_read:2,cache_write:25}},"opper/gemini-3.1-pro-preview":{input:2,output:12,cache_read:.2,tiers:[{input:4,output:18,cache_read:.4,tier:{type:"context",size:2e5}}],context_over_200k:{input:4,output:18,cache_read:.4}},"opper/grok-4.5":{input:2,output:6,cache_read:.5},"opper/claude-opus-5":{input:5.5,output:27.5,cache_read:.55,cache_write:6.875},"opper/qwen3.6-35b-a3b":{input:.248,output:1.485},"opper/gpt-oss-20b":{input:.11622,output:.488124},"opper/minimax-m2.7":{input:.69732,output:2.78928},"opper/gemini-3.5-flash":{input:1.5,output:9,cache_read:.15},"opper/claude-fable-5":{input:10,output:50,cache_read:1,cache_write:12.5},"opper/muse-spark-1.2":{input:1.25,output:4.25,cache_read:.15},"opper/gpt-5.4-mini":{input:.75,output:4.5,cache_read:.075},"opper/minimax-m3":{input:.6,output:2.4,cache_read:.12,tiers:[{input:1.2,output:4.8,cache_read:.24,tier:{type:"context",size:524288}}],context_over_200k:{input:1.2,output:4.8,cache_read:.24}},"opper/gpt-5.6-luna":{input:.2,output:1.2,cache_read:.02,cache_write:.25,tiers:[{input:.4,output:1.8,cache_read:.04,cache_write:.5,tier:{type:"context",size:272e3}}],context_over_200k:{input:.4,output:1.8,cache_read:.04,cache_write:.5}},"opper/mistral-small-2603":{input:.5811,output:2.44062},"opper/claude-opus-4-8":{input:5,output:25,cache_read:.5,cache_write:6.25},"opper/gpt-5.5":{input:5,output:30,cache_read:.5,tiers:[{input:10,output:45,cache_read:1,tier:{type:"context",size:272e3}}],context_over_200k:{input:10,output:45,cache_read:1}},"opper/claude-sonnet-5":{input:2.2,output:11,cache_read:.22,cache_write:2.75},"opper/claude-opus-4-6":{input:5,output:25,cache_read:.5,cache_write:6.25},"opper/gemini-3.7-flash":{input:.75,output:3.75,cache_read:.075},"opper/glm-5.2":{input:1.62708,output:5.811},"opper/gemini-3-flash-preview":{input:.5,output:3,cache_read:.05},"opper/grok-build-0.1":{input:1,output:2,cache_read:.2},"opper/sonar":{input:1,output:1},"opper/mistral-large-2512":{input:.5,output:1.5},"opper/gemini-3.8-flash":{input:.825,output:4.125,cache_read:.0825},"opper/deepseek-v4-pro":{input:1.78812,output:3.57624},"opper/claude-sonnet-4-6":{input:3.3,output:16.5,cache_read:.33,cache_write:4.125},"opper/gpt-5.3-chat-latest":{input:1.75,output:14,cache_read:.175},"opper/sonar-reasoning-pro":{input:2,output:8},"opper/gpt-5.6-terra":{input:2,output:12,cache_read:.2,cache_write:2.5,tiers:[{input:4,output:18,cache_read:.4,cache_write:5,tier:{type:"context",size:272e3}}],context_over_200k:{input:4,output:18,cache_read:.4,cache_write:5}},"opper/gpt-oss-120b":{input:1.1622,output:4.88124},"opper/glm-5.3":{input:1.75,output:4.6488,cache_read:.44},"opper/claude-opus-4-7":{input:5.5,output:27.5,cache_read:.55,cache_write:6.875},"opper/grok-4.6":{input:2,output:6,cache_read:.5,tiers:[{input:4,output:12,cache_read:1,tier:{type:"context",size:2e5}}],context_over_200k:{input:4,output:12,cache_read:1}},"opper/gpt-5.6-sol":{input:5,output:30,cache_read:.5,cache_write:6.25,tiers:[{input:10,output:45,cache_read:1,cache_write:12.5,tier:{type:"context",size:272e3}}],context_over_200k:{input:10,output:45,cache_read:1,cache_write:12.5}},"opper/deepseek-v4-flash":{input:.25,output:.66},"nvidia/deepseek-ai/deepseek-v4-pro":{input:.435,output:.87,cache_read:.003625},"nvidia/deepseek-ai/deepseek-v4-flash":{input:.14,output:.28,cache_read:.0028},"nvidia/nvidia/nemotron-3-super-120b-a12b":{input:.2,output:.8},"nvidia/nvidia/nemotron-3-ultra-550b-a55b":{input:.5,output:2.5,cache_read:.15},"pioneer/gpt-5.4":{input:2.5,output:15,cache_read:.25,cache_write:2.5},"pioneer/claude-haiku-4-5":{input:1,output:5,cache_read:.1,cache_write:1.25},"pioneer/qwen3.7-max":{input:1.25,output:3.75,cache_read:.25,cache_write:1.5625},"pioneer/gpt-5.4-nano":{input:.2,output:1.25,cache_read:.02,cache_write:.2},"pioneer/gpt-4o":{input:2.5,output:10,cache_read:1.25,cache_write:2.5},"pioneer/ministral-3b":{input:.1,output:.1,cache_read:.1,cache_write:.1},"pioneer/magistral-medium":{input:2,output:5,cache_read:2,cache_write:2},"pioneer/gpt-5-mini":{input:.25,output:2,cache_read:.025,cache_write:.25},"pioneer/claude-opus-4-5":{input:5,output:25,cache_read:.5,cache_write:6.25},"pioneer/claude-3-7-sonnet-latest":{input:3,output:15,cache_read:.3,cache_write:3.75},"pioneer/gpt-5.3-codex":{input:1.75,output:14,cache_read:.175,cache_write:1.75},"pioneer/gpt-4.1-nano":{input:.1,output:.4,cache_read:.05,cache_write:.1},"pioneer/mistral-medium-3.5":{input:1.5,output:7.5,cache_read:1.5,cache_write:1.5},"pioneer/gpt-5-nano":{input:.05,output:.4,cache_read:.005,cache_write:.05},"pioneer/claude-sonnet-4-5":{input:3,output:15,cache_read:.3,cache_write:3.75},"pioneer/gemini-3.6-flash":{input:1.5,output:7.5,cache_read:.15,cache_write:1.5},"pioneer/gemini-3.5-flash-lite":{input:.3,output:2.5,cache_read:.03,cache_write:.3},"pioneer/claude-opus-4-1":{input:15,output:75,cache_read:1.5,cache_write:18.75},"pioneer/grok-4.5":{input:2,output:6,cache_read:.5,cache_write:2},"pioneer/gpt-5.1":{input:1.25,output:10,cache_read:.125,cache_write:1.25},"pioneer/claude-opus-5":{input:5,output:25,cache_read:.5,cache_write:6.25},"pioneer/gpt-4o-mini":{input:.15,output:.6,cache_read:.075,cache_write:.15},"pioneer/gemini-3-flash":{input:.5,output:3,cache_read:.05,cache_write:.083333},"pioneer/gemini-3.5-flash":{input:1.5,output:9,cache_read:.15,cache_write:.083333},"pioneer/qwen3.6-flash":{input:.1875,output:1.125,cache_read:.0375,cache_write:.234375},"pioneer/mistral-large-3":{input:.5,output:1.5,cache_read:.5,cache_write:.5},"pioneer/claude-fable-5":{input:11,output:55,cache_read:1.1,cache_write:13.75},"pioneer/gpt-5.4-mini":{input:.75,output:4.5,cache_read:.075,cache_write:.75},"pioneer/gpt-5.6-luna":{input:1,output:6,cache_read:.1,cache_write:1.25},"pioneer/devstral-small-2":{input:.1,output:.3,cache_read:.1,cache_write:.1},"pioneer/devstral-2":{input:.4,output:2,cache_read:.4,cache_write:.4},"pioneer/claude-opus-4-8":{input:5,output:25,cache_read:.5,cache_write:6.25},"pioneer/gpt-5.5":{input:5,output:30,cache_read:.5,cache_write:5},"pioneer/gpt-4.1":{input:2,output:8,cache_read:1,cache_write:2},"pioneer/mistral-medium":{input:.4,output:2,cache_read:.4,cache_write:.4},"pioneer/claude-sonnet-5":{input:2,output:10,cache_read:.2,cache_write:2.5},"pioneer/qwen3.6-max-preview":{input:1.04,output:6.24,cache_read:.208,cache_write:1.3},"pioneer/claude-opus-4-6":{input:5,output:25,cache_read:.5,cache_write:6.25},"pioneer/gpt-4.1-mini":{input:.4,output:1.6,cache_read:.2,cache_write:.4},"pioneer/claude-sonnet-4-6":{input:3,output:15,cache_read:.3,cache_write:3.75},"pioneer/claude-opus-5-fast":{input:10,output:50,cache_read:1,cache_write:12.5},"pioneer/qwen3.6-plus":{input:.325,output:1.95,cache_read:.065,cache_write:.40625},"pioneer/gpt-5.6-terra":{input:2.5,output:15,cache_read:.25,cache_write:3.125},"pioneer/claude-opus-4-7":{input:5,output:25,cache_read:.5,cache_write:6.25},"pioneer/ministral-14b":{input:.2,output:.2,cache_read:.2,cache_write:.2},"pioneer/gemini-3.1-pro":{input:2,output:12,cache_read:.2,cache_write:.375},"pioneer/qwen3.7-plus":{input:.32,output:1.28,cache_read:.064,cache_write:.4},"pioneer/gpt-5.6-sol":{input:5,output:30,cache_read:.5,cache_write:6.25},"pioneer/gemini-3.1-flash-lite":{input:.25,output:1.5,cache_read:.03,cache_write:.25},"pioneer/poolside/laguna-s-2.1":{input:.1,output:.2,cache_read:.01,cache_write:.1},"pioneer/meta-llama/Llama-3.2-1B-Instruct":{input:.1,output:.201,cache_read:.1,cache_write:.1},"pioneer/meta-llama/Llama-3.2-3B-Instruct":{input:.1,output:.335,cache_read:.1,cache_write:.1},"pioneer/meta-llama/Llama-3.1-8B-Instruct":{input:.2,output:.2,cache_read:.2,cache_write:.2},"pioneer/meta-llama/Llama-3.2-3B":{input:.1,output:.1,cache_read:.1,cache_write:.1},"pioneer/meta-llama/Llama-3.2-1B":{input:.1,output:.1,cache_read:.1,cache_write:.1},"pioneer/meta-llama/Llama-3.3-70B-Instruct":{input:.9,output:.9,cache_read:.9,cache_write:.9},"pioneer/XiaomiMiMo/MiMo-V2.5-Pro":{input:.435,output:.87,cache_read:.0036,cache_write:.435},"pioneer/XiaomiMiMo/MiMo-V2.5":{input:.14,output:.28,cache_read:.0028,cache_write:.14},"pioneer/thinkingmachines/inkling-small":{input:.5,output:1.2,cache_read:.1,cache_write:.5},"pioneer/meta/muse-spark-1.1":{input:1.25,output:4.25,cache_read:.15,cache_write:1.25},"pioneer/HuggingFaceTB/SmolLM3-3B-Base":{input:.15,output:.15,cache_read:.15,cache_write:.15},"pioneer/google/diffusiongemma-26B-A4B-it":{input:.5,output:.5,cache_read:.5,cache_write:.5},"pioneer/google/gemma-4-12B-it":{input:.25,output:.25,cache_read:.25,cache_write:.25},"pioneer/google/gemma-4-E2B-it":{input:.1,output:.1,cache_read:.1,cache_write:.1},"pioneer/google/gemma-3-4b-pt":{input:.15,output:.15,cache_read:.15,cache_write:.15},"pioneer/google/gemma-4-31B-it":{input:.5,output:.5,cache_read:.5,cache_write:.5},"pioneer/google/gemma-4-E4B-it":{input:.2,output:.2,cache_read:.2,cache_write:.2},"pioneer/Qwen/Qwen3-4B-Instruct-2507":{input:.2,output:.2,cache_read:.2,cache_write:.2},"pioneer/Qwen/Qwen2.5-Coder-0.5B":{input:.1,output:.1,cache_read:.1,cache_write:.1},"pioneer/Qwen/Qwen3-1.7B-Base":{input:.1,output:.1,cache_read:.1,cache_write:.1},"pioneer/Qwen/Qwen3.6-35B-A3B":{input:.14,output:1,cache_read:.028,cache_write:.175},"pioneer/Qwen/Qwen3-235B-A22B-Instruct-2507":{input:1.2,output:1.2,cache_read:1.2,cache_write:1.2},"pioneer/Qwen/Qwen3-8B":{input:.2,output:.2,cache_read:.2,cache_write:.2},"pioneer/Qwen/Qwen3-4B-Base":{input:.15,output:.15,cache_read:.15,cache_write:.15},"pioneer/Qwen/Qwen3-32B":{input:.9,output:.9,cache_read:.9,cache_write:.9},"pioneer/Qwen/Qwen3.5-9B":{input:.3,output:.3,cache_read:.3,cache_write:.3},"pioneer/Qwen/Qwen3.6-27B":{input:.6,output:.6,cache_read:.6,cache_write:.6},"pioneer/LiquidAI/LFM2-24B-A2B":{input:.03,output:.12,cache_read:.03,cache_write:.03},"pioneer/deepseek-ai/DeepSeek-V3.1":{input:.56,output:1.68,cache_read:.56,cache_write:.56},"pioneer/deepseek-ai/DeepSeek-V4-Flash":{input:.1,output:.2,cache_read:.0197,cache_write:.1},"pioneer/deepseek-ai/DeepSeek-V4-Pro":{input:.435,output:.87,cache_read:.003625,cache_write:.435},"pioneer/deepseek-ai/DeepSeek-V3":{input:.27,output:1.12,cache_read:.135,cache_write:.27},"pioneer/MiniMaxAI/MiniMax-M3":{input:.3,output:1.2,cache_read:.06,cache_write:.3},"pioneer/MiniMaxAI/MiniMax-M2.7":{input:.279,output:1.2,cache_read:.279,cache_write:.279},"pioneer/mistralai/Mistral-Small-4-119B-2603":{input:.15,output:.6,cache_read:.015,cache_write:.15},"pioneer/mistralai/Pixtral-12B-2409":{input:.15,output:.15,cache_read:.15,cache_write:.15},"pioneer/mistralai/Mistral-Nemo-Instruct-2407":{input:.02,output:.03,cache_read:.02,cache_write:.02},"pioneer/mistralai/Magistral-Small-2506":{input:.5,output:1.5,cache_read:.5,cache_write:.5},"pioneer/mistralai/Ministral-8B-Instruct-2410":{input:.15,output:.15,cache_read:.15,cache_write:.15},"pioneer/mistralai/Codestral-22B-v0.1":{input:.3,output:.9,cache_read:.3,cache_write:.3},"pioneer/mistralai/Mistral-7B-Instruct-v0.3":{input:.2,output:.2,cache_read:.2,cache_write:.2},"pioneer/sakana/fugu-ultra":{input:5,output:30,cache_read:.5,cache_write:5},"pioneer/moonshotai/Kimi-K2.6":{input:.95,output:4,cache_read:.34,cache_write:.95},"pioneer/moonshotai/Kimi-K3":{input:3,output:15,cache_read:.3,cache_write:3},"pioneer/moonshotai/Kimi-K3-Fast":{input:4.5,output:22.5,cache_read:.45,cache_write:4.5},"pioneer/moonshotai/Kimi-K2.7-Code":{input:.95,output:4,cache_read:.19,cache_write:.95},"pioneer/zai-org/GLM-5.1":{input:.98,output:3.08,cache_read:.182,cache_write:.98},"pioneer/zai-org/GLM-5.2":{input:1.4,output:4.4,cache_read:.26,cache_write:1.4},"pioneer/zai-org/GLM-5.2-Fast":{input:2.1,output:6.6,cache_read:.21,cache_write:2.1},"pioneer/nvidia/NVIDIA-Nemotron-3-Nano-30B-A3B-BF16":{input:.05,output:.2,cache_read:.05,cache_write:.05},"pioneer/nvidia/NVIDIA-Nemotron-3.5-Lightning-30B-A3B-BF16":{input:.5,output:.5,cache_read:.5,cache_write:.5},"pioneer/nvidia/NVIDIA-Nemotron-3-Ultra-550B-A55B-BF16":{input:.5,output:2.5,cache_read:.15,cache_write:.5},"pioneer/nvidia/NVIDIA-Nemotron-3-Super-120B-A12B-FP8":{input:.09,output:.45,cache_read:.09,cache_write:.09},"pioneer/fastino/gliner2-multi-v1":{input:.15,output:.15,cache_read:.15,cache_write:.15},"pioneer/fastino/gliner2-privacy-filter-PII-multi":{input:.15,output:.15,cache_read:.15,cache_write:.15},"pioneer/fastino/gliner2.5-multi-v1":{input:.15,output:.15,cache_read:.15,cache_write:.15},"pioneer/fastino/gliguard-LLMGuardrails-300M":{input:.15,output:.15,cache_read:.15,cache_write:.15},"pioneer/fastino/gliner2-large-v1":{input:.15,output:.15,cache_read:.15,cache_write:.15},"pioneer/fastino/gliner2-base-v1":{input:.15,output:.15,cache_read:.15,cache_write:.15},"pioneer/fastino/gliguard-PII-multi":{input:.15,output:.15,cache_read:.15,cache_write:.15},"pioneer/fastino/gliner2-multi-large-v1":{input:.15,output:.15,cache_read:.15,cache_write:.15},"pioneer/openai/gpt-oss-20b":{input:.07,output:.3,cache_read:.035,cache_write:.07},"pioneer/openai/gpt-oss-120b":{input:.15,output:.6,cache_read:.015,cache_write:.15},"xiaomi/mimo-v2.6-pro":{input:.435,output:.87,cache_read:.0036},"xiaomi/mimo-v2-flash":{input:.14,output:.28,cache_read:.0028},"xiaomi/mimo-v2.5":{input:.14,output:.28,cache_read:.0028},"xiaomi/mimo-v2-omni":{input:.14,output:.28,cache_read:.0028},"xiaomi/mimo-v2.6-pro-ultraspeed":{input:4.35,output:8.7,cache_read:.036},"xiaomi/mimo-v2-pro":{input:.435,output:.87,cache_read:.0036},"xiaomi/mimo-v2.5-pro":{input:.435,output:.87,cache_read:.0036},"xiaomi/mimo-v2.6-flash":{input:.14,output:.28,cache_read:.0028},"xiaomi/mimo-v2.5-pro-ultraspeed":{input:1.305,output:2.61,cache_read:.0108},"minimax/MiniMax-M3":{input:.3,output:1.2,cache_read:.06,tiers:[{input:.6,output:2.4,cache_read:.12,tier:{type:"context",size:512e3}}],context_over_200k:{input:.6,output:2.4,cache_read:.12}},"minimax/MiniMax-M2.1":{input:.3,output:1.2,cache_read:.03,cache_write:.375},"minimax/MiniMax-M2.5":{input:.3,output:1.2,cache_read:.03,cache_write:.375},"minimax/MiniMax-M2.7":{input:.3,output:1.2,cache_read:.06,cache_write:.375},"minimax/MiniMax-M2.7-highspeed":{input:.6,output:2.4,cache_read:.06,cache_write:.375},"minimax/MiniMax-M2":{input:.3,output:1.2},"minimax/MiniMax-M2.5-highspeed":{input:.6,output:2.4,cache_read:.06,cache_write:.375},"github-copilot/gpt-5.4":{input:2.5,output:15,cache_read:.25,tiers:[{input:5,output:22.5,cache_read:.5,tier:{type:"context",size:272e3}}],context_over_200k:{input:5,output:22.5,cache_read:.5}},"github-copilot/grok-4.7":{input:2,output:6,cache_read:.5,tiers:[{input:4,output:12,cache_read:1,tier:{type:"context",size:2e5}}],context_over_200k:{input:4,output:12,cache_read:1}},"github-copilot/gpt-5.4-nano":{input:.2,output:1.25,cache_read:.02},"github-copilot/claude-opus-4.7":{input:5,output:25,cache_read:.5,cache_write:6.25},"github-copilot/kimi-k3":{input:3,output:15,cache_read:.3},"github-copilot/gpt-5-mini":{input:.25,output:2,cache_read:.025},"github-copilot/claude-opus-4.8":{input:5,output:25,cache_read:.5,cache_write:6.25},"github-copilot/gpt-5.3-codex":{input:1.75,output:14,cache_read:.175},"github-copilot/gemini-3.6-flash":{input:.75,output:3.75,cache_read:.075},"github-copilot/mai-code-1-flash-picker":{input:.75,output:4.5,cache_read:.075},"github-copilot/mai-code-1.1-flash":{input:.2,output:1.2,cache_read:.02},"github-copilot/claude-haiku-4.5":{input:1,output:5,cache_read:.1,cache_write:1.25},"github-copilot/gpt-6-astra":{input:10,output:50,cache_read:1,cache_write:12.5,tiers:[{input:20,output:75,cache_read:2,cache_write:25,tier:{type:"context",size:272e3}}],context_over_200k:{input:20,output:75,cache_read:2,cache_write:25}},"github-copilot/grok-4.5":{input:2,output:6,cache_read:.5,tiers:[{input:4,output:12,cache_read:1,tier:{type:"context",size:2e5}}],context_over_200k:{input:4,output:12,cache_read:1}},"github-copilot/claude-opus-5":{input:5,output:25,cache_read:.5,cache_write:6.25},"github-copilot/gemini-3.5-flash":{input:1.5,output:9,cache_read:.15,input_audio:1.5},"github-copilot/claude-fable-5.1":{input:10,output:50,cache_read:.25,cache_write:12.5},"github-copilot/claude-fable-5":{input:10,output:50,cache_read:1,cache_write:12.5},"github-copilot/gpt-5.4-mini":{input:.75,output:4.5,cache_read:.075},"github-copilot/gpt-5.6-luna":{input:.2,output:1.2,cache_read:.02,cache_write:.25,tiers:[{input:.4,output:1.8,cache_read:.04,cache_write:.5,tier:{type:"context",size:2e5}}],context_over_200k:{input:.4,output:1.8,cache_read:.04,cache_write:.5}},"github-copilot/gpt-5.5":{input:5,output:30,cache_read:.5,tiers:[{input:10,output:45,cache_read:1,tier:{type:"context",size:272e3}}],context_over_200k:{input:10,output:45,cache_read:1}},"github-copilot/claude-sonnet-5":{input:2,output:10,cache_read:.2,cache_write:2.5},"github-copilot/gemini-3.7-flash":{input:.75,output:3.75,cache_read:.075},"github-copilot/claude-sonnet-4.6":{input:3,output:15,cache_read:.3,cache_write:3.75},"github-copilot/gemini-3.8-flash":{input:.75,output:3.75,cache_read:.075},"github-copilot/gpt-6-luna":{input:.1,output:.5,cache_read:.01,cache_write:.125,tiers:[{input:.2,output:.75,cache_read:.02,cache_write:.25,tier:{type:"context",size:272e3}}],context_over_200k:{input:.2,output:.75,cache_read:.02,cache_write:.25}},"github-copilot/claude-opus-5.5":{input:4,output:20,cache_read:.2,cache_write:5},"github-copilot/gpt-5.6-terra":{input:2,output:12,cache_read:.2,cache_write:2.5,tiers:[{input:4,output:18,cache_read:.4,cache_write:5,tier:{type:"context",size:272e3}}],context_over_200k:{input:4,output:18,cache_read:.4,cache_write:5}},"github-copilot/kimi-k2.7-code":{input:.95,output:4,cache_read:.19},"github-copilot/grok-4.6":{input:2,output:6,cache_read:.5,tiers:[{input:4,output:12,cache_read:1,tier:{type:"context",size:2e5}}],context_over_200k:{input:4,output:12,cache_read:1}},"github-copilot/gpt-5.6-sol":{input:4,output:20,cache_read:.4,cache_write:5,tiers:[{input:8,output:30,cache_read:.8,cache_write:10,tier:{type:"context",size:272e3}}],context_over_200k:{input:8,output:30,cache_read:.8,cache_write:10}},"github-copilot/gpt-6-sol":{input:2,output:10,cache_read:.2,cache_write:2.5,tiers:[{input:4,output:15,cache_read:.4,cache_write:5,tier:{type:"context",size:272e3}}],context_over_200k:{input:4,output:15,cache_read:.4,cache_write:5}},"opencode-go/mimo-v2.6-pro":{input:.435,output:.87,cache_read:.003625},"opencode-go/qwen3.7-max":{input:2.5,output:7.5,cache_read:.5,cache_write:3.125},"opencode-go/mimo-v2.5":{input:.14,output:.28,cache_read:.0028},"opencode-go/grok-4.7":{input:2,output:6,cache_read:.5,tiers:[{input:4,output:12,cache_read:1,tier:{type:"context",size:2e5}}],context_over_200k:{input:4,output:12,cache_read:1}},"opencode-go/mimo-v2-omni":{input:.4,output:2,cache_read:.08},"opencode-go/glm-5.3-flash":{input:.15,output:.5,cache_read:.03},"opencode-go/qwen3.8-max":{input:2,output:6,cache_read:.25,cache_write:2.5},"opencode-go/kimi-k3":{input:3,output:15,cache_read:.3},"opencode-go/qwen3.5-plus":{input:.2,output:1.2,cache_read:.02,cache_write:.25},"opencode-go/glm-5":{input:1,output:3.2,cache_read:.2},"opencode-go/deepseek-v4.1-flash":{input:.15,output:.6,cache_read:.003},"opencode-go/minimax-m2.5":{input:.3,output:1.2,cache_read:.06,cache_write:.375},"opencode-go/deepseek-v4-flash-vision-exp":{input:.15,output:.6,cache_read:.003},"opencode-go/kimi-k2.6":{input:.95,output:4,cache_read:.16},"opencode-go/longcat-2.0":{input:.3,output:1.2,cache_read:.006},"opencode-go/grok-4.5":{input:2,output:6,cache_read:.3,tiers:[{input:4,output:12,cache_read:.6,tier:{type:"context",size:2e5}}],context_over_200k:{input:4,output:12,cache_read:.6}},"opencode-go/kimi-k2.5":{input:.6,output:3,cache_read:.1},"opencode-go/mimo-v2-pro":{input:1,output:3,cache_read:.2,tiers:[{input:2,output:6,cache_read:.4,tier:{type:"context",size:256e3}}],context_over_200k:{input:2,output:6,cache_read:.4}},"opencode-go/minimax-m2.7":{input:.3,output:1.2,cache_read:.06,cache_write:.375},"opencode-go/mimo-v2.5-pro":{input:.435,output:.87,cache_read:.003625},"opencode-go/mimo-v2.6-flash":{input:.14,output:.28,cache_read:.0028},"opencode-go/minimax-m3":{input:.3,output:1.2,cache_read:.06,tiers:[{input:.6,output:2.4,cache_read:.12,tier:{type:"context",size:512e3}}],context_over_200k:{input:.6,output:2.4,cache_read:.12}},"opencode-go/gpt-5.6-luna":{input:.2,output:1.2,cache_read:.02,cache_write:.25,tiers:[{input:.4,output:1.8,cache_read:.04,cache_write:.5,tier:{type:"context",size:272e3}}],context_over_200k:{input:.4,output:1.8,cache_read:.04,cache_write:.5}},"opencode-go/qwen3.8-flash":{input:.15,output:.47,cache_read:.016,cache_write:.2},"opencode-go/glm-5.2":{input:1.4,output:4.4,cache_read:.26},"opencode-go/hy3":{input:.14,output:.58,cache_read:.035},"opencode-go/glm-5.1":{input:1.4,output:4.4,cache_read:.26},"opencode-go/omen-alpha":{input:.2,output:.66,cache_read:.04},"opencode-go/muse-spark-1.2-contributor":{input:.1,output:.2,cache_read:.002},"opencode-go/gpt-6-luna":{input:.1,output:.5,cache_read:.01,cache_write:.125,tiers:[{input:.2,output:.75,cache_read:.02,cache_write:.25,tier:{type:"context",size:272e3}}],context_over_200k:{input:.2,output:.75,cache_read:.02,cache_write:.25}},"opencode-go/deepseek-v4-pro":{input:.66,output:1.98,cache_read:.022},"opencode-go/qwen3.6-plus":{input:.5,output:3,cache_read:.05,cache_write:.625,tiers:[{input:2,output:6,cache_read:.2,cache_write:2.5,tier:{type:"context",size:256e3}}],context_over_200k:{input:2,output:6,cache_read:.2,cache_write:2.5}},"opencode-go/hy4-preview":{input:.834,output:2.501,cache_read:.042},"opencode-go/muse-spark-1.3-contributor":{input:.1,output:.2,cache_read:.002},"opencode-go/glm-5.3":{input:1.4,output:4.4,cache_read:.26},"opencode-go/kimi-k2.7-code":{input:.95,output:4,cache_read:.19},"opencode-go/grok-4.6":{input:2,output:6,cache_read:.5,tiers:[{input:4,output:12,cache_read:1,tier:{type:"context",size:2e5}}],context_over_200k:{input:4,output:12,cache_read:1}},"opencode-go/qwen3.7-plus":{input:.4,output:1.6,cache_read:.04,cache_write:.5,tiers:[{input:1.2,output:4.8,cache_read:.12,cache_write:1.5,tier:{type:"context",size:256e3}}],context_over_200k:{input:1.2,output:4.8,cache_read:.12,cache_write:1.5}},"opencode-go/deepseek-v4-flash":{input:.15,output:.6,cache_read:.003},"openreason/deepseek-ai/deepseek-v4-flash-0731":{input:.1371,output:.2743},"openreason/moonshotai/kimi-k2.7-code":{input:1.0022,output:4.22},"openreason/openai/gpt-oss-120b":{input:.1055,output:.422},"aki-io/qwen3.8-27b":{input:.3,output:2.2,cache_read:.1},"aki-io/deepseek-v4-flash-0731-284b":{input:.2,output:.5,cache_read:.1},"aki-io/qwen3.6-35b":{input:.15,output:.5},"aki-io/glm5.3-754b":{input:1,output:3.5,cache_read:.25},"aki-io/mistral4-119b":{input:.2,output:.6},"aki-io/gpt-oss-120b":{input:.15,output:.55},"aki-io/gemma4-26b":{input:.1,output:.5},"tensorx/deepseek/deepseek-v4-flash-0731":{input:.25,output:.3,cache_read:.06},"tensorx/deepseek/deepseek-v4.1-flash":{input:.5,output:1.5,cache_read:.13},"tensorx/deepseek/deepseek-v4-pro-0813":{input:2,output:4,cache_read:.5},"tensorx/deepseek/deepseek-v4-pro":{input:1.75,output:3.5,cache_read:.4375,cache_write:2.185},"tensorx/deepseek/deepseek-r1-0528":{input:.66,output:2.6,cache_read:.165,cache_write:.825},"tensorx/deepseek/deepseek-v3.2":{input:.3,output:.5,cache_read:.075,cache_write:.375},"tensorx/z-ai/glm-5v-turbo":{input:1.2,output:4,cache_read:.3,cache_write:1.5},"tensorx/z-ai/glm-5.3-flash":{input:.2,output:.5,cache_read:.05},"tensorx/z-ai/glm-5":{input:1,output:3.2,cache_read:.25,cache_write:1.25},"tensorx/z-ai/glm-5.2":{input:1.5,output:4.5,cache_read:.375},"tensorx/z-ai/glm-5.1":{input:1.4,output:4.4,cache_read:.35,cache_write:1.75},"tensorx/z-ai/glm-5-turbo":{input:1.2,output:4,cache_read:.3,cache_write:1.5},"tensorx/z-ai/glm-5.3":{input:1.75,output:4.5,cache_read:.44},"tensorx/moonshotai/kimi-k3":{input:3,output:15,cache_read:.75},"tensorx/moonshotai/kimi-k2.6":{input:1,output:4,cache_read:.25,cache_write:1.25},"tensorx/moonshotai/kimi-k2.5":{input:.5,output:2.8,cache_read:.125,cache_write:.625},"tensorx/moonshotai/kimi-k2.7-code":{input:1.25,output:4.5,cache_read:.3125},"tensorx/minimax/minimax-m2.5":{input:.3,output:1.2,cache_read:.075,cache_write:.375},"tensorx/minimax/minimax-m3":{input:.4,output:2,cache_read:.1},"tensorx/qwen/qwen3-235b-a22b-2507":{input:.072,output:.464,cache_read:.018,cache_write:.09},"tensorx/qwen/qwen3.8-27b":{input:.4,output:2.4,cache_read:.1},"tensorx/qwen/qwen3.8-2.4t-a95b":{input:2.5,output:6,cache_read:.63},"tensorx/qwen/qwen3.5-122b-a10b":{input:.5,output:3.5,cache_read:.125,cache_write:.625},"tensorx/qwen/qwen3.5-9b":{input:.15,output:.2,cache_read:.0375,cache_write:.1875},"tensorx/qwen/qwen3.8-flash-next":{input:.2,output:.5,cache_read:.05},"longcat/LongCat-2.0":{input:.75,output:2.95,cache_read:.015},"chutes/Nemotron-3-Nano-Omni-30B-TEE":{input:.0245,output:.0978,cache_read:.0024499999999999995},"chutes/unsloth/Mistral-Nemo-Instruct-2407-TEE":{input:.0245,output:.0978,cache_read:.0024499999999999995},"chutes/google/gemma-4-31B-turbo-TEE":{input:.12,output:.37,cache_read:.011999999999999997},"chutes/Qwen/Qwen3-32B-TEE":{input:.104,output:.416,cache_read:.010399999999999998},"chutes/Qwen/Qwen3.6-27B-TEE":{input:.3,output:2,cache_read:.029999999999999992},"chutes/Qwen/Qwen3-235B-A22B-Thinking-2507-TEE":{input:.2989,output:1.1957,cache_read:.029889999999999993},"chutes/Qwen/Qwen3.8-27B-TEE":{input:.24,output:2.2,cache_read:.023999999999999994},"chutes/Qwen/Qwen3.5-397B-A17B-TEE":{input:.45,output:3,cache_read:.04499999999999999},"chutes/deepseek-ai/DeepSeek-V4-Flash-0731-TEE":{input:.44,output:1.32,cache_read:.04399999999999999},"chutes/deepseek-ai/DeepSeek-V3.2-TEE":{input:1,output:1,cache_read:.09999999999999998},"chutes/moonshotai/Kimi-K3-TEE":{input:3,output:15,cache_read:.29999999999999993},"chutes/moonshotai/Kimi-K2.6-TEE":{input:.5,output:2.85,cache_read:.04999999999999999},"chutes/zai-org/GLM-5.2-TEE":{input:1.25,output:3.95,cache_read:.12499999999999997},"chutes/zai-org/GLM-5.1-TEE":{input:.98,output:3.08,cache_read:.09799999999999998},"edenai/deepinfra/nemotron-3-ultra-550b-a55b":{input:.5,output:2.2,cache_read:.1},"edenai/deepinfra/meta-models/Muse-Glimmer-30B":{input:.3,output:1.2,cache_read:.04},"edenai/deepinfra/tencent/Hy3":{input:.13,output:.53,cache_read:.033},"edenai/deepinfra/tencent/Hy4-preview":{input:.834,output:2.501,cache_read:.042},"edenai/deepinfra/meta-llama/Llama-Guard-3-8B":{input:.055,output:.055},"edenai/deepinfra/meta-llama/Llama-3.2-11B-Vision-Instruct":{input:.345,output:.345},"edenai/deepinfra/meta-llama/Llama-3.3-70B-Instruct":{input:.1,output:.32},"edenai/deepinfra/thinkingmachines/Inkling-Small":{input:.45,output:1.2,cache_read:.1},"edenai/deepinfra/thinkingmachines/Inkling":{input:.95,output:4.05,cache_read:.16},"edenai/deepinfra/google/gemma-3-27b-it":{input:.08,output:.16},"edenai/deepinfra/google/gemma-3-12b-it":{input:.05,output:.15},"edenai/deepinfra/google/gemma-3-4b-it":{input:.05,output:.1},"edenai/deepinfra/deepseek-ai/DeepSeek-V4-Flash-0731":{input:.06,output:.18,cache_read:.015},"edenai/deepinfra/deepseek-ai/DeepSeek-R1":{input:.7,output:2.4},"edenai/deepinfra/deepseek-ai/DeepSeek-V4-Pro-0813":{input:1.3,output:2.6,cache_read:.1},"edenai/deepinfra/deepseek-ai/DeepSeek-V4.1-Flash":{input:.2,output:.6,cache_read:.006},"edenai/deepinfra/deepseek-ai/DeepSeek-V3":{input:.32,output:.89},"edenai/deepinfra/deepseek-ai/DeepSeek-V3-0324":{input:.24,output:.9,cache_read:.135},"edenai/deepinfra/stepfun-ai/Step-3.7-Flash":{input:.2,output:1.15,cache_read:.04},"edenai/deepinfra/stepfun-ai/Step-3.5-Flash":{input:.09,output:.3,cache_read:.02},"edenai/deepinfra/moonshotai/Kimi-K2.5":{input:.45,output:2.25,cache_read:.07},"edenai/deepinfra/zai-org/GLM-4.7-Flash":{input:.06,output:.4,cache_read:.01},"edenai/deepinfra/nvidia/Nemotron-3-Nano-30B-A3B":{input:.05,output:.2,cache_read:.025},"edenai/deepinfra/nvidia/Llama-3.1-Nemotron-70B-Instruct":{input:.6,output:.6},"edenai/deepinfra/ByteDance/Seed-2.0-code":{input:.5,output:3,cache_read:.1},"edenai/deepinfra/ByteDance/Seed-2.0-mini":{input:.1,output:.4,cache_read:.02},"edenai/deepinfra/openai/gpt-oss-20b":{input:.03,output:.14},"edenai/deepinfra/openai/gpt-oss-120b":{input:.037,output:.17},"edenai/cerebras/gpt-oss-120b":{input:.35,output:.75,cache_read:.35},"edenai/groq/openai/gpt-oss-20b":{input:.075,output:.3,cache_read:.0375},"edenai/groq/openai/gpt-oss-safeguard-20b":{input:.075,output:.3,cache_read:.0375},"edenai/groq/openai/gpt-oss-120b":{input:.15,output:.6,cache_read:.075},"edenai/zai/glm-4.6v":{input:.3,output:.9,cache_read:.05},"edenai/zai/glm-5v-turbo":{input:1.2,output:4,cache_read:.24},"edenai/zai/glm-5.3-flash":{input:.15,output:.5,cache_read:.03},"edenai/zai/glm-4.6":{input:.6,output:2.2,cache_read:.11},"edenai/zai/glm-5":{input:1,output:3.2,cache_read:.2},"edenai/zai/glm-4.7":{input:.6,output:2.2,cache_read:.11},"edenai/zai/glm-5.2":{input:1.4,output:4.4,cache_read:.26},"edenai/zai/glm-5.1":{input:1.4,output:4.4,cache_read:.26},"edenai/zai/glm-5-turbo":{input:1.2,output:4,cache_read:.24},"edenai/zai/glm-5.3":{input:1.4,output:4.4,cache_read:.26},"edenai/anthropic/claude-opus-latest":{input:4,output:20,cache_read:.2,cache_write:5},"edenai/anthropic/claude-opus-4-5":{input:5,output:25,cache_read:.5,cache_write:6.25},"edenai/anthropic/claude-opus-5-5":{input:4,output:20,cache_read:.2,cache_write:5},"edenai/anthropic/claude-fable-5-1":{input:10,output:50,cache_read:.25,cache_write:12.5},"edenai/anthropic/claude-sonnet-latest":{input:2,output:10,cache_read:.2,cache_write:2.5},"edenai/anthropic/claude-opus-4-5-20251101":{input:5,output:25,cache_read:.5,cache_write:6.25},"edenai/anthropic/claude-opus-5":{input:5,output:25,cache_read:.5,cache_write:6.25},"edenai/anthropic/claude-fable-latest":{input:10,output:50,cache_read:.25,cache_write:12.5},"edenai/anthropic/claude-fable-5":{input:10,output:50,cache_read:1,cache_write:12.5},"edenai/anthropic/claude-opus-4-8":{input:5,output:25,cache_read:.5,cache_write:6.25},"edenai/anthropic/claude-sonnet-5":{input:2,output:10,cache_read:.2,cache_write:2.5},"edenai/anthropic/claude-opus-4-6":{input:5,output:25,cache_read:.5,cache_write:6.25},"edenai/anthropic/claude-sonnet-4-6":{input:3,output:15,cache_read:.3,cache_write:3.75},"edenai/anthropic/claude-opus-4-7":{input:5,output:25,cache_read:.5,cache_write:6.25},"edenai/cohere/command-r-08-2024":{input:.15,output:.6},"edenai/cohere/command-a-03-2025":{input:2.5,output:10},"edenai/cohere/command-r7b-12-2024":{input:.0375,output:.15},"edenai/cohere/command-r-plus-08-2024":{input:2.5,output:10},"edenai/cohere/c4ai-aya-expanse-32b":{input:.5,output:1.5},"edenai/deepseek/deepseek-v4-flash-vision-exp":{input:.15,output:.6,cache_read:.003},"edenai/deepseek/deepseek-chat":{input:.15,output:.6,cache_read:.003},"edenai/deepseek/deepseek-v4-pro":{input:.66,output:1.98,cache_read:.022},"edenai/deepseek/deepseek-v4-flash":{input:.15,output:.6,cache_read:.003},"edenai/databricks/databricks-inkling":{input:1,output:4.05,cache_read:.1,cache_write:1.00002},"edenai/databricks/databricks-gpt-oss-20b":{input:.07,output:.30002,cache_read:.007,cache_write:.07},"edenai/databricks/databricks-deepseek-v4-flash-0731":{input:.14,output:.28,cache_read:.014,cache_write:.14},"edenai/databricks/databricks-gpt-oss-120b@eu":{input:.15001,output:.59997,cache_read:.015001,cache_write:.15001},"edenai/databricks/databricks-gpt-oss-120b":{input:.15001,output:.59997,cache_read:.015001,cache_write:.15001},"edenai/databricks/databricks-deepseek-v4-pro-0813":{input:1.32,output:3.959999,cache_read:.132,cache_write:1.31999},"edenai/databricks/databricks-gpt-oss-20b@eu":{input:.07,output:.30002,cache_read:.007,cache_write:.07},"edenai/together_ai/meta-models/Muse-Glimmer-30B":{input:.35,output:1.5,cache_read:.04},"edenai/together_ai/thinkingmachines/Inkling":{input:1,output:4.05,cache_read:.17},"edenai/together_ai/deepseek-ai/DeepSeek-V4-Flash-0731":{input:.14,output:.28,cache_read:.03},"edenai/together_ai/deepseek-ai/DeepSeek-V4-Pro-0813":{input:1.32,output:3.96,cache_read:.13},"edenai/together_ai/deepseek-ai/DeepSeek-V4.1-Flash":{input:.3,output:1.2,cache_read:.006},"edenai/together_ai/openai/gpt-oss-120b":{input:.15,output:.6},"edenai/azure/gpt-5.2-codex":{input:1.75,output:14,cache_read:.175},"edenai/azure/gpt-5.1-codex":{input:1.25,output:10,cache_read:.125},"edenai/azure/gpt-5.1-codex-max":{input:1.25,output:10,cache_read:.125},"edenai/azure/gpt-5.1-codex-mini":{input:.25,output:2,cache_read:.025},"edenai/flexai/Step-3.7-Flash":{input:.2,output:1.15,cache_read:.03},"edenai/flexai/DeepSeek-V4-Flash-0731":{input:.06,output:.18,cache_read:.009},"edenai/flexai/Muse-Glimmer-30B":{input:.3,output:1.2,cache_read:.045},"edenai/flexai/gpt-oss-20b":{input:.02,output:.1,cache_read:.003},"edenai/flexai/gpt-oss-120b":{input:.03,output:.17,cache_read:.0045},"edenai/google/gemini-flash-latest":{input:.75,output:3.75,reasoning:3.75,cache_read:.075,cache_write:.041667,input_audio:.75},"edenai/google/gemini-3.1-flash-image-preview":{input:.5,output:3},"edenai/google/gemini-2.5-flash-image":{input:.3,output:2.5,reasoning:2.5,cache_read:.03,cache_write:.083333,input_audio:1},"edenai/google/gemini-3.6-flash":{input:.75,output:3.75,reasoning:3.75,cache_read:.075,cache_write:.041667,input_audio:.75},"edenai/google/gemini-3-pro-image-preview":{input:2,output:12,reasoning:12,cache_read:.2,cache_write:.375,input_audio:2},"edenai/google/gemini-3.5-flash-lite":{input:.3,output:2.5,reasoning:2.5,cache_read:.03,cache_write:.083333,input_audio:.3},"edenai/google/gemini-3.1-flash-image":{input:.5,output:3},"edenai/google/gemini-3.1-pro-preview":{input:2,output:12,reasoning:12,cache_read:.2,cache_write:.375,input_audio:2,tiers:[{input:4,output:18,cache_read:.4,tier:{type:"context",size:2e5}}],context_over_200k:{input:4,output:18,cache_read:.4}},"edenai/google/gemini-3.5-flash":{input:1.5,output:9,reasoning:9,cache_read:.15,cache_write:.083333,input_audio:3},"edenai/google/gemini-3-pro-image":{input:2,output:12,reasoning:12,cache_read:.2,cache_write:.375,input_audio:2},"edenai/google/gemini-3.1-flash-lite-image":{input:.25,output:1.5},"edenai/google/deep-research-preview-04-2026":{input:2,output:12},"edenai/google/deep-research-max-preview-04-2026":{input:2,output:12},"edenai/google/gemini-3.7-flash":{input:.75,output:3.75,reasoning:3.75,cache_read:.075,cache_write:.041667,input_audio:.75},"edenai/google/gemini-3.1-pro-preview-customtools":{input:2,output:12,reasoning:12,cache_read:.2,cache_write:.375,input_audio:2,tiers:[{input:4,output:18,cache_read:.4,tier:{type:"context",size:2e5}}],context_over_200k:{input:4,output:18,cache_read:.4}},"edenai/google/gemini-3-flash-preview":{input:.5,output:3,reasoning:3,cache_read:.05,cache_write:.083333,input_audio:1},"edenai/google/gemini-pro-latest":{input:2,output:12,reasoning:12,cache_read:.2,cache_write:.375,input_audio:2,tiers:[{input:4,output:18,cache_read:.4,tier:{type:"context",size:2e5}}],context_over_200k:{input:4,output:18,cache_read:.4}},"edenai/google/gemini-3.8-flash":{input:.75,output:3.75,reasoning:3.75,cache_read:.075,cache_write:.041667,input_audio:.75},"edenai/google/gemini-3.1-flash-lite-preview":{input:.25,output:1.5,reasoning:1.5,cache_read:.025,cache_write:.083333,input_audio:.5},"edenai/google/gemini-3.1-flash-lite":{input:.25,output:1.5,reasoning:1.5,cache_read:.025,cache_write:.083333,input_audio:.5},"edenai/xai/grok-latest":{input:2,output:6,cache_read:.5,tiers:[{input:3.2,output:9.6,cache_read:.8,tier:{type:"context",size:2e5}}],context_over_200k:{input:3.2,output:9.6,cache_read:.8}},"edenai/xai/grok-4.7":{input:2,output:6,cache_read:.5,tiers:[{input:3.2,output:9.6,cache_read:.8,tier:{type:"context",size:2e5}}],context_over_200k:{input:3.2,output:9.6,cache_read:.8}},"edenai/xai/grok-4.3":{input:1.25,output:2.5,cache_read:.2,tiers:[{input:2.5,output:5,cache_read:.4,tier:{type:"context",size:2e5}}],context_over_200k:{input:2.5,output:5,cache_read:.4}},"edenai/xai/grok-4.20-0309-reasoning":{input:1.25,output:2.5,cache_read:.2,tiers:[{input:2.5,output:5,cache_read:.4,tier:{type:"context",size:2e5}}],context_over_200k:{input:2.5,output:5,cache_read:.4}},"edenai/xai/grok-4.5":{input:2,output:6,cache_read:.3,tiers:[{input:4,output:12,cache_read:.6,tier:{type:"context",size:2e5}}],context_over_200k:{input:4,output:12,cache_read:.6}},"edenai/xai/grok-4.20-0309-non-reasoning":{input:1.25,output:2.5,cache_read:.2,tiers:[{input:2.5,output:5,cache_read:.4,tier:{type:"context",size:2e5}}],context_over_200k:{input:2.5,output:5,cache_read:.4}},"edenai/xai/grok-build-0.1":{input:1,output:2,cache_read:.2,tiers:[{input:2,output:4,cache_read:.4,tier:{type:"context",size:2e5}}],context_over_200k:{input:2,output:4,cache_read:.4}},"edenai/xai/grok-4.6":{input:2,output:6,cache_read:.5,tiers:[{input:4,output:12,cache_read:1,tier:{type:"context",size:2e5}}],context_over_200k:{input:4,output:12,cache_read:1}},"edenai/nebius/google/gemma-3-27b-it":{input:.1,output:.3,cache_read:.1},"edenai/nebius/deepseek-ai/DeepSeek-V4-Flash-0731":{input:.14,output:.28,cache_read:.14},"edenai/nebius/deepseek-ai/DeepSeek-V4-Pro-0813":{input:1.32,output:3.96,cache_read:1.32},"edenai/nebius/deepseek-ai/DeepSeek-V4.1-Flash":{input:.3,output:1.2,cache_read:.3},"edenai/nebius/nvidia/nemotron-3-super-120b-a12b":{input:.3,output:.9,cache_read:.3},"edenai/nebius/nvidia/Nemotron-3-Ultra-550b-a55b":{input:1,output:3,cache_read:1},"edenai/nebius/openai/gpt-oss-120b":{input:.15,output:.6,cache_read:.15},"edenai/scaleway/gemma-3-27b-it":{input:.287125,output:.57425},"edenai/scaleway/deepseek-v4-flash-0731":{input:.45612,output:.91224,cache_read:.091224},"edenai/scaleway/llama-3.3-70b-instruct":{input:1.02627,output:1.02627},"edenai/scaleway/gpt-oss-120b":{input:.171045,output:.68418},"edenai/ionos/meta-llama/Llama-3.3-70B-Instruct":{input:.741195,output:.741195},"edenai/ionos/openai/gpt-oss-120b":{input:.171045,output:.741195},"edenai/vertex/gemini-flash-latest":{input:.75,output:3.75,reasoning:3.75,cache_read:.075,cache_write:.041667,input_audio:.75},"edenai/vertex/gemini-2.5-flash-image":{input:.3,output:2.5,reasoning:2.5,cache_read:.03,cache_write:.083333,input_audio:1},"edenai/vertex/gemini-3.1-flash-lite@eu":{input:.25,output:1.5,reasoning:1.5,cache_read:.025,cache_write:.083333,input_audio:.5},"edenai/vertex/gemini-3.5-flash-lite@eu":{input:.3,output:2.5,reasoning:2.5,cache_read:.03,cache_write:.083333,input_audio:.3},"edenai/vertex/gemini-3.6-flash@eu":{input:.75,output:3.75,reasoning:3.75,cache_read:.075,cache_write:.041667,input_audio:.75},"edenai/vertex/gemini-3.6-flash":{input:.75,output:3.75,reasoning:3.75,cache_read:.075,cache_write:.041667,input_audio:.75},"edenai/vertex/gemini-3.5-flash-lite":{input:.3,output:2.5,reasoning:2.5,cache_read:.03,cache_write:.083333,input_audio:.3},"edenai/vertex/gemini-3.1-flash-image":{input:.5,output:3},"edenai/vertex/gemini-3.1-pro-preview":{input:2,output:12,reasoning:12,cache_read:.2,cache_write:.375,input_audio:2,tiers:[{input:4,output:18,cache_read:.4,cache_write:.25,tier:{type:"context",size:2e5}}],context_over_200k:{input:4,output:18,cache_read:.4,cache_write:.25}},"edenai/vertex/gemini-3.5-flash":{input:1.5,output:9,reasoning:9,cache_read:.15,cache_write:.083333,input_audio:3},"edenai/vertex/gemini-3-pro-image":{input:2,output:12,reasoning:12,cache_read:.2,cache_write:.375,input_audio:2},"edenai/vertex/gemini-3.7-flash@us":{input:.75,output:3.75,reasoning:3.75,cache_read:.075,cache_write:.041667,input_audio:.75},"edenai/vertex/gemini-3.7-flash@eu":{input:.75,output:3.75,reasoning:3.75,cache_read:.075,cache_write:.041667,input_audio:.75},"edenai/vertex/gemini-3.1-flash-lite-image":{input:.25,output:1.5},"edenai/vertex/gemini-3.8-flash@eu":{input:.75,output:3.75,reasoning:3.75,cache_read:.075,cache_write:.041667,input_audio:.75},"edenai/vertex/gemini-3.7-flash":{input:.75,output:3.75,reasoning:3.75,cache_read:.075,cache_write:.041667,input_audio:.75},"edenai/vertex/gemini-3.6-flash@us":{input:.75,output:3.75,reasoning:3.75,cache_read:.075,cache_write:.041667,input_audio:.75},"edenai/vertex/gemini-3.5-flash-lite@us":{input:.3,output:2.5,reasoning:2.5,cache_read:.03,cache_write:.083333,input_audio:.3},"edenai/vertex/gemini-3-flash-preview":{input:.5,output:3,reasoning:3,cache_read:.05,cache_write:.083333,input_audio:1},"edenai/vertex/gemini-3.1-flash-lite@us":{input:.25,output:1.5,reasoning:1.5,cache_read:.025,cache_write:.083333,input_audio:.5},"edenai/vertex/gemini-pro-latest":{input:2,output:12,reasoning:12,cache_read:.2,cache_write:.375,input_audio:2,tiers:[{input:4,output:18,cache_read:.4,cache_write:.25,tier:{type:"context",size:2e5}}],context_over_200k:{input:4,output:18,cache_read:.4,cache_write:.25}},"edenai/vertex/gemini-3.8-flash":{input:.75,output:3.75,reasoning:3.75,cache_read:.075,cache_write:.041667,input_audio:.75},"edenai/vertex/gemini-3.5-flash@eu":{input:1.5,output:9,reasoning:9,cache_read:.15,cache_write:.083333,input_audio:3},"edenai/vertex/gemini-3.8-flash@us":{input:.75,output:3.75,reasoning:3.75,cache_read:.075,cache_write:.041667,input_audio:.75},"edenai/vertex/gemini-3.5-flash@us":{input:1.5,output:9,reasoning:9,cache_read:.15,cache_write:.083333,input_audio:3},"edenai/vertex/gemini-3.1-flash-lite":{input:.25,output:1.5,reasoning:1.5,cache_read:.025,cache_write:.083333,input_audio:.5},"edenai/perplexityai/sonar-pro":{input:3,output:15},"edenai/perplexityai/sonar-deep-research":{input:2,output:8,reasoning:3},"edenai/perplexityai/sonar":{input:1,output:1},"edenai/perplexityai/sonar-reasoning-pro":{input:2,output:8},"edenai/cloudflare/@cf/meta/llama-guard-3-8b":{input:.484,output:.03},"edenai/cloudflare/@cf/aisingapore/gemma-sea-lion-v4-27b-it":{input:.351,output:.555},"edenai/cloudflare/@cf/deepseek-ai/deepseek-v4-flash-0731":{input:.44,output:1.32,cache_read:.014},"edenai/cloudflare/@cf/deepseek-ai/deepseek-v4-pro-0813":{input:1.32,output:3.96,cache_read:.044},"edenai/cloudflare/@cf/zai-org/glm-4.7-flash":{input:.0605,output:.4},"edenai/cloudflare/@cf/qwen/qwen2.5-coder-32b-instruct":{input:.66,output:1},"edenai/cloudflare/@cf/openai/gpt-oss-20b":{input:.2,output:.3},"edenai/cloudflare/@cf/openai/gpt-oss-120b":{input:.35,output:.75},"edenai/minimax/MiniMax-M3":{input:.3,output:1.2,cache_read:.06},"edenai/minimax/MiniMax-M2.1":{input:.3,output:1.2,cache_read:.03},"edenai/minimax/MiniMax-M2.5":{input:.3,output:1.2,cache_read:.03},"edenai/minimax/MiniMax-M2.7":{input:.3,output:1.2,cache_read:.06},"edenai/minimax/MiniMax-M2":{input:.3,output:1.2},"edenai/tensorx/deepseek/deepseek-v4-flash-0731":{input:.25,output:.3,cache_read:.0625},"edenai/tensorx/deepseek/deepseek-v4.1-flash":{input:.5,output:1.5,cache_read:.125},"edenai/tensorx/deepseek/deepseek-v4-pro-0813":{input:2,output:4,cache_read:.5},"edenai/tensorx/moonshotai/kimi-k2.5":{input:.5,output:2.8,cache_read:.125},"edenai/amazon/google.gemma-3-12b-it":{input:.09,output:.29},"edenai/amazon/google.gemma-3-4b-it":{input:.04,output:.08},"edenai/amazon/openai.gpt-oss-safeguard-20b@us":{input:.07,output:.2},"edenai/amazon/openai.gpt-oss-safeguard-20b":{input:.07,output:.2},"edenai/amazon/amazon.nova-lite-v1:0@us":{input:.06,output:.24,cache_read:.015},"edenai/amazon/mistral.voxtral-mini-3b-2507@us":{input:.04,output:.04},"edenai/amazon/amazon.nova-micro-v1:0":{input:.035,output:.14,cache_read:.00875},"edenai/amazon/amazon.nova-pro-v1:0":{input:.8,output:3.2,cache_read:.2},"edenai/amazon/mistral.voxtral-small-24b-2507":{input:.1,output:.3},"edenai/amazon/amazon.nova-lite-v1:0":{input:.06,output:.24,cache_read:.015},"edenai/amazon/mistral.voxtral-small-24b-2507@us":{input:.1,output:.3},"edenai/amazon/google.gemma-3-12b-it@us":{input:.09,output:.29},"edenai/amazon/google.gemma-3-27b-it":{input:.23,output:.38},"edenai/amazon/google.gemma-3-27b-it@us":{input:.23,output:.38},"edenai/amazon/mistral.pixtral-large-2502-v1:0":{input:2,output:6},"edenai/amazon/amazon.nova-micro-v1:0@us":{input:.035,output:.14,cache_read:.00875},"edenai/amazon/zai.glm-4.7-flash@us":{input:.07,output:.4},"edenai/amazon/moonshotai.kimi-k2.5":{input:.6,output:3},"edenai/amazon/amazon.nova-pro-v1:0@us":{input:.8,output:3.2,cache_read:.2},"edenai/amazon/mistral.pixtral-large-2502-v1:0@us":{input:2,output:6},"edenai/amazon/zai.glm-4.7-flash":{input:.07,output:.4},"edenai/amazon/moonshot.kimi-k2-thinking":{input:.6,output:2.5},"edenai/amazon/google.gemma-3-4b-it@us":{input:.04,output:.08},"edenai/amazon/mistral.voxtral-mini-3b-2507":{input:.04,output:.04},"edenai/ovhcloud/gpt-oss-20b":{input:.05,output:.18},"edenai/ovhcloud/gpt-oss-120b":{input:.09,output:.47},"edenai/fireworks_ai/gpt-oss-120b":{input:.15,output:.6,cache_read:.014},"edenai/fireworks_ai/accounts/fireworks/models/deepseek-v4-flash-0731":{input:.22,output:.66,cache_read:.007},"edenai/fireworks_ai/accounts/fireworks/models/muse-glimmer-30b":{input:.35,output:1.5,cache_read:.04},"edenai/fireworks_ai/accounts/fireworks/models/deepseek-v4-pro-0813":{input:1.32,output:3.96,cache_read:.044},"edenai/fireworks_ai/accounts/fireworks/models/inkling":{input:1,output:4.05,cache_read:.17},"edenai/mistral/codestral-latest":{input:.3,output:.9,cache_read:.03},"edenai/mistral/mistral-large-latest":{input:2,output:6,cache_read:.2},"edenai/mistral/mistral-small-latest":{input:.15,output:.6,cache_read:.015},"edenai/mistral/devstral-medium-latest":{input:.4,output:2},"edenai/mistral/devstral-2512":{input:.4,output:2,cache_read:.04},"edenai/mistral/mistral-medium-2505":{input:.4,output:2},"edenai/mistral/magistral-medium-latest":{input:1.5,output:7.5,cache_read:.15},"edenai/mistral/mistral-small-2603":{input:.15,output:.6,cache_read:.015},"edenai/mistral/mistral-large-2512":{input:.5,output:1.5,cache_read:.05},"edenai/mistral/voxtral-small-latest":{input:.1,output:.4,cache_read:.01},"edenai/mistral/mistral-medium-2604":{input:1.5,output:7.5,cache_read:.15},"edenai/mistral/mistral-medium-latest":{input:1.5,output:7.5,cache_read:.15},"edenai/qwen/qwen3-vl-235b-a22b-instruct":{input:.4,output:1.6},"edenai/qwen/qwq-plus":{input:.8,output:2.4},"edenai/qwen/qwen3.8-27b":{input:.5,output:3,cache_read:.1,cache_write:.625},"edenai/qwen/qwen3-vl-235b-a22b-thinking":{input:.4,output:4},"edenai/qwen/qwen3.8-2.4t-a95b":{input:2,output:6,cache_read:.25,cache_write:2.5},"edenai/qwen/deepseek-v4-flash-0731":{input:.22,output:.66,cache_read:.022},"edenai/qwen/qwen3-235b-a22b-instruct-2507":{input:.23,output:.92},"edenai/qwen/qwen-max":{input:1.6,output:6.4,cache_read:.32},"edenai/qwen/qwen3-next-80b-a3b-thinking":{input:.15,output:1.2},"edenai/qwen/qwen3.8-max":{input:2,output:6,cache_read:.25,cache_write:2.5},"edenai/qwen/qwen3-coder-next":{input:.3,output:1.5},"edenai/qwen/deepseek-v4.1-flash":{input:.15,output:.6,cache_read:.015},"edenai/qwen/qwen3-coder-next@eu":{input:.3,output:1.5},"edenai/qwen/qwen3-max":{input:1.2,output:6,cache_read:.24,cache_write:1.5},"edenai/qwen/qwen3-coder-480b-a35b-instruct":{input:1.5,output:7.5},"edenai/qwen/qwen3-coder-30b-a3b-instruct":{input:.45,output:2.25},"edenai/qwen/qwen-vl-max":{input:.8,output:3.2,cache_read:.16},"edenai/qwen/qwen3-max@eu":{input:1.2,output:6,cache_read:.24,cache_write:1.5},"edenai/qwen/qwen3-next-80b-a3b-instruct":{input:.15,output:1.2},"edenai/qwen/qwen-vl-plus":{input:.21,output:.63,cache_read:.042},"edenai/qwen/qwen3-coder-flash":{input:.3,output:1.5,cache_read:.06,cache_write:.375},"edenai/qwen/deepseek-v4-pro-0813":{input:.66,output:1.98,cache_read:.066},"edenai/qwen/qwen3-coder-plus":{input:1,output:5,cache_read:.2,cache_write:1.25},"edenai/qwen/qwen3.8-flash":{input:.15,output:.47,cache_read:.016,cache_write:.2},"edenai/qwen/qwen3.8-max-0902":{input:2,output:6,cache_read:.25,cache_write:2.5},"edenai/openai/gpt-5.4":{input:2.5,output:15,cache_read:.25,tiers:[{input:5,output:22.5,cache_read:.5,tier:{type:"context",size:272e3}}],context_over_200k:{input:5,output:22.5,cache_read:.5}},"edenai/openai/gpt-5.4-pro":{input:30,output:180,tiers:[{input:60,output:270,tier:{type:"context",size:272e3}}],context_over_200k:{input:60,output:270}},"edenai/openai/gpt-3.5-turbo":{input:.5,output:1.5},"edenai/openai/gpt-5.5-pro":{input:30,output:180,tiers:[{input:60,output:270,tier:{type:"context",size:272e3}}],context_over_200k:{input:60,output:270}},"edenai/openai/gpt-5.4-nano":{input:.2,output:1.25,cache_read:.02},"edenai/openai/gpt-4o":{input:2.5,output:10,cache_read:1.25},"edenai/openai/gpt-5-mini":{input:.25,output:2,cache_read:.025},"edenai/openai/gpt-5.2-pro":{input:21,output:168},"edenai/openai/o4-mini":{input:1.1,output:4.4,cache_read:.275},"edenai/openai/o3-mini":{input:1.1,output:4.4,cache_read:.55},"edenai/openai/gpt-4":{input:30,output:60},"edenai/openai/gpt-5.3-codex":{input:1.75,output:14,cache_read:.175},"edenai/openai/gpt-4.1-nano":{input:.1,output:.4,cache_read:.025},"edenai/openai/gpt-5-nano":{input:.05,output:.4,cache_read:.005},"edenai/openai/o1":{input:15,output:60,cache_read:7.5},"edenai/openai/gpt-latest":{input:10,output:50,cache_read:1,cache_write:12.5,tiers:[{input:20,output:75,cache_read:2,cache_write:25,tier:{type:"context",size:272e3}}],context_over_200k:{input:20,output:75,cache_read:2,cache_write:25}},"edenai/openai/gpt-5-pro":{input:15,output:120},"edenai/openai/gpt-4o-2024-08-06":{input:2.5,output:10,cache_read:1.25},"edenai/openai/gpt-6-astra":{input:10,output:50,cache_read:1,cache_write:12.5,tiers:[{input:20,output:75,cache_read:2,cache_write:25,tier:{type:"context",size:272e3}}],context_over_200k:{input:20,output:75,cache_read:2,cache_write:25}},"edenai/openai/gpt-5.1":{input:1.25,output:10,cache_read:.125},"edenai/openai/gpt-4o-mini":{input:.15,output:.6,cache_read:.075},"edenai/openai/o3-pro":{input:20,output:80},"edenai/openai/gpt-5.4-mini":{input:.75,output:4.5,cache_read:.075},"edenai/openai/gpt-5.6-luna":{input:.2,output:1.2,cache_read:.02,cache_write:.25,tiers:[{input:.4,output:1.8,cache_read:.04,cache_write:.5,tier:{type:"context",size:272e3}}],context_over_200k:{input:.4,output:1.8,cache_read:.04,cache_write:.5}},"edenai/openai/gpt-5.2":{input:1.75,output:14,cache_read:.175},"edenai/openai/gpt-5.5":{input:5,output:30,cache_read:.5,tiers:[{input:10,output:45,cache_read:1,tier:{type:"context",size:272e3}}],context_over_200k:{input:10,output:45,cache_read:1}},"edenai/openai/gpt-4.1":{input:2,output:8,cache_read:.5},"edenai/openai/gpt-4o-2024-11-20":{input:2.5,output:10,cache_read:1.25},"edenai/openai/gpt-mini-latest":{input:.75,output:4.5,cache_read:.075},"edenai/openai/gpt-4.1-mini":{input:.4,output:1.6,cache_read:.1},"edenai/openai/gpt-6-luna":{input:.1,output:.5,cache_read:.01,cache_write:.125,tiers:[{input:.2,output:.75,cache_read:.02,cache_write:.25,tier:{type:"context",size:272e3}}],context_over_200k:{input:.2,output:.75,cache_read:.02,cache_write:.25}},"edenai/openai/gpt-5.6-terra":{input:2,output:12,cache_read:.2,cache_write:2.5,tiers:[{input:4,output:18,cache_read:.4,cache_write:5,tier:{type:"context",size:272e3}}],context_over_200k:{input:4,output:18,cache_read:.4,cache_write:5}},"edenai/openai/gpt-4-turbo":{input:10,output:30},"edenai/openai/o3":{input:2,output:8,cache_read:.5},"edenai/openai/gpt-5":{input:1.25,output:10,cache_read:.125},"edenai/openai/gpt-5.6-sol":{input:4,output:20,cache_read:.4,cache_write:5,tiers:[{input:8,output:30,cache_read:.8,cache_write:10,tier:{type:"context",size:272e3}}],context_over_200k:{input:8,output:30,cache_read:.8,cache_write:10}},"edenai/openai/gpt-6-sol":{input:2,output:10,cache_read:.2,cache_write:2.5,tiers:[{input:4,output:15,cache_read:.4,cache_write:5,tier:{type:"context",size:272e3}}],context_over_200k:{input:4,output:15,cache_read:.4,cache_write:5}},"edenai/openai/o1-pro":{input:150,output:600},"edenai/openai/gpt-pro-latest":{input:30,output:180,tiers:[{input:60,output:270,tier:{type:"context",size:272e3}}],context_over_200k:{input:60,output:270}},"edenai/infomaniak/mistralai/Ministral-3-14B-Instruct-2512":{input:.34209,output:.45612},"edenai/moonshot/kimi-k3":{input:3,output:15,cache_read:.3},"edenai/moonshot/kimi-k2.7-code-highspeed":{input:1.9,output:8,cache_read:.38},"edenai/moonshot/kimi-k2.6":{input:.95,output:4,cache_read:.16},"edenai/moonshot/kimi-k2.7-code":{input:.95,output:4,cache_read:.19},"stepfun/step-1-32k":{input:2.05,output:9.59,cache_read:.41},"stepfun/step-5-preview":{input:.959,output:2.741,cache_read:.048},"stepfun/step-3.5-flash-2603":{input:.1,output:.3,cache_read:.02},"stepfun/step-2-16k":{input:5.21,output:16.44,cache_read:1.04},"stepfun/step-3.5-flash":{input:.1,output:.3,cache_read:.02},"stepfun/step-3.7-flash":{input:.185,output:1.11,cache_read:.037},"hpc-ai/anthropic/claude-opus-4.7":{input:5,output:25,cache_read:.5},"hpc-ai/deepseek/deepseek-v4-pro":{input:1.74,output:3.48,cache_read:.145},"hpc-ai/deepseek/deepseek-v4-flash":{input:.14,output:.28,cache_read:.028},"hpc-ai/moonshotai/kimi-k2.5":{input:.6,output:3,cache_read:.1},"hpc-ai/moonshotai/kimi-k2.7-code":{input:.95,output:4,cache_read:.19},"hpc-ai/zai-org/glm-5.2":{input:1.4,output:4.4,cache_read:.26},"hpc-ai/zai-org/glm-5.1":{input:.615,output:2.46,cache_read:.133},"hpc-ai/minimax/minimax-m2.5":{input:.3,output:1.2,cache_read:.03},"hpc-ai/openai/gpt-5.5":{input:5,output:30,cache_read:.5,tiers:[{input:10,output:45,cache_read:1,tier:{type:"context",size:272e3}}],context_over_200k:{input:10,output:45,cache_read:1}},"v0/v0-1.5-lg":{input:15,output:75},"v0/v0-1.5-md":{input:3,output:15},"v0/v0-1.0-md":{input:3,output:15},"tempr/anthropic/claude-haiku-4-5":{input:1,output:5,cache_read:.1,cache_write:1.25},"tempr/anthropic/claude-opus-4-5":{input:5,output:25,cache_read:.5,cache_write:6.25},"tempr/anthropic/claude-sonnet-4-5":{input:3,output:15,cache_read:.3,cache_write:3.75},"tempr/anthropic/claude-fable-5-1":{input:10,output:50,cache_read:.25,cache_write:12.5},"tempr/anthropic/claude-opus-4-5-20251101":{input:5,output:25,cache_read:.5,cache_write:6.25},"tempr/anthropic/claude-opus-5":{input:5,output:25,cache_read:.5,cache_write:6.25},"tempr/anthropic/claude-fable-5":{input:10,output:50,cache_read:1,cache_write:12.5},"tempr/anthropic/claude-opus-4-8":{input:5,output:25,cache_read:.5,cache_write:6.25},"tempr/anthropic/claude-sonnet-4-5-20250929":{input:3,output:15,cache_read:.3,cache_write:3.75},"tempr/anthropic/claude-sonnet-5":{input:2,output:10,cache_read:.2,cache_write:2.5},"tempr/anthropic/claude-opus-4-6":{input:5,output:25,cache_read:.5,cache_write:6.25},"tempr/anthropic/claude-haiku-4-5-20251001":{input:1,output:5,cache_read:.1,cache_write:1.25},"tempr/anthropic/claude-sonnet-4-6":{input:3,output:15,cache_read:.3,cache_write:3.75},"tempr/anthropic/claude-opus-4-7":{input:5,output:25,cache_read:.5,cache_write:6.25},"tempr/google/gemini-flash-latest":{input:.75,output:3.75,cache_read:.075,input_audio:.75},"tempr/google/gemini-flash-lite-latest":{input:.3,output:2.5,cache_read:.03},"tempr/google/gemini-embedding-2":{input:.2,output:0},"tempr/google/gemini-3.6-flash":{input:.75,output:3.75,cache_read:.075,input_audio:.75},"tempr/google/gemini-3.5-flash-lite":{input:.3,output:2.5,cache_read:.03},"tempr/google/gemini-3.1-pro-preview":{input:2,output:12,cache_read:.2,tiers:[{input:4,output:18,cache_read:.4,tier:{type:"context",size:2e5}}],context_over_200k:{input:4,output:18,cache_read:.4}},"tempr/google/gemini-3.5-flash":{input:1.5,output:9,cache_read:.15,input_audio:1.5},"tempr/google/gemini-3.7-flash":{input:.75,output:3.75,cache_read:.075,input_audio:.75},"tempr/google/gemini-3.1-pro-preview-customtools":{input:2,output:12,cache_read:.2,tiers:[{input:4,output:18,cache_read:.4,tier:{type:"context",size:2e5}}],context_over_200k:{input:4,output:18,cache_read:.4}},"tempr/google/gemini-3-flash-preview":{input:.5,output:3,cache_read:.05,input_audio:1},"tempr/google/gemini-3.8-flash":{input:.75,output:3.75,cache_read:.075,input_audio:.75},"tempr/google/gemini-embedding-001":{input:.15,output:0},"tempr/google/gemini-3.1-flash-lite":{input:.25,output:1.5,cache_read:.025,input_audio:.5},"tempr/mistral/mistral-large-latest":{input:.5,output:1.5},"tempr/mistral/mistral-small-latest":{input:.15,output:.6},"tempr/mistral/zai-glm-5-2":{input:1.4,output:4.4,cache_read:.14},"tempr/mistral/mistral-embed":{input:.1,output:0},"tempr/mistral/mistral-small-2603":{input:.15,output:.6},"tempr/mistral/mistral-large-2512":{input:.5,output:1.5},"tempr/mistral/voxtral-small-latest":{input:.1,output:.3},"tempr/mistral/zai-glm-5-3":{input:1.4,output:4.4,cache_read:.14},"tempr/mistral/mistral-medium-2604":{input:1.5,output:7.5},"tempr/mistral/mistral-medium-latest":{input:1.5,output:7.5},"inception/mercury-edit-2":{input:.25,output:.75,cache_read:.025},"inception/mercury-2.5":{input:.04,output:.15,cache_read:.004},"inception/mercury-2":{input:.25,output:.75,cache_read:.025},"modelis/gemini-2.5-pro":{input:1.25,output:10},"modelis/gemini-2.5-flash":{input:.3,output:2.5},"modelis/claude-fable-5":{input:10,output:50},"modelis/claude-opus-4-8":{input:5,output:25},"modelis/deepseek-v4-pro":{input:.435,output:.87},"modelis/claude-sonnet-4-6":{input:3,output:15},"modelis/deepseek-v4-flash":{input:.0983,output:.1966},"modelis/qwen/qwen3.7-max":{input:3,output:9},"modelis/qwen/qwen3.7-plus":{input:.768,output:3.072},"opencode/gpt-5.4":{input:2.5,output:15,cache_read:.25,tiers:[{input:5,output:22.5,cache_read:.5,tier:{type:"context",size:272e3}}],context_over_200k:{input:5,output:22.5,cache_read:.5}},"opencode/claude-haiku-4-5":{input:1,output:5,cache_read:.1,cache_write:1.25},"opencode/gpt-5.4-pro":{input:30,output:180,cache_read:30},"opencode/muse-spark-1.3":{input:1.25,output:4.25,cache_read:.15},"opencode/gpt-5.5-pro":{input:30,output:180,cache_read:30},"opencode/grok-4.7":{input:1.4,output:4.2,cache_read:.35,tiers:[{input:2.8,output:8.4,cache_read:.7,tier:{type:"context",size:2e5}}],context_over_200k:{input:2.8,output:8.4,cache_read:.7}},"opencode/gpt-5.4-nano":{input:.2,output:1.25,cache_read:.02},"opencode/gpt-5.2-codex":{input:1.75,output:14,cache_read:.175},"opencode/gpt-5.1-codex":{input:1.07,output:8.5,cache_read:.107},"opencode/glm-5.3-flash":{input:.15,output:.5,cache_read:.03},"opencode/glm-4.6":{input:.6,output:2.2,cache_read:.1},"opencode/qwen3.8-max":{input:2,output:6,cache_read:.25,cache_write:2.5},"opencode/kimi-k3":{input:3,output:15,cache_read:.3},"opencode/gpt-5-codex":{input:1.07,output:8.5,cache_read:.107},"opencode/qwen3-coder":{input:.45,output:1.8},"opencode/qwen3.5-plus":{input:.2,output:1.2,cache_read:.02,cache_write:.25},"opencode/claude-opus-4-5":{input:5,output:25,cache_read:.5,cache_write:6.25},"opencode/glm-5":{input:1,output:3.2,cache_read:.2},"opencode/deepseek-v4.1-flash":{input:.3,output:1.2,cache_read:.006},"opencode/gpt-5.3-codex":{input:1.75,output:14,cache_read:.175},"opencode/minimax-m2.5":{input:.3,output:1.2,cache_read:.06},"opencode/gpt-5-nano":{input:.05,output:.4,cache_read:.005},"opencode/deepseek-v4-flash-vision-exp":{input:.14,output:.28,cache_read:.028},"opencode/kimi-k2.6":{input:.95,output:4,cache_read:.16},"opencode/claude-sonnet-4-5":{input:3,output:15,cache_read:.3,cache_write:3.75,tiers:[{input:6,output:22.5,cache_read:.6,cache_write:7.5,tier:{type:"context",size:2e5}}],context_over_200k:{input:6,output:22.5,cache_read:.6,cache_write:7.5}},"opencode/claude-opus-5-5":{input:4,output:20,cache_read:.2,cache_write:5},"opencode/claude-fable-5-1":{input:10,output:50,cache_read:.25,cache_write:12.5},"opencode/gemini-3.6-flash":{input:1.5,output:7.5,cache_read:.15,input_audio:1.5},"opencode/kimi-k2-thinking":{input:.4,output:2.5,cache_read:.4},"opencode/gpt-5.3-codex-spark":{input:1.75,output:14,cache_read:.175},"opencode/gemini-3.5-flash-lite":{input:.3,output:2.5,cache_read:.03},"opencode/claude-opus-4-1":{input:15,output:75,cache_read:1.5,cache_write:18.75},"opencode/gpt-6-astra":{input:10,output:50,cache_read:1,cache_write:12.5,tiers:[{input:20,output:75,cache_read:2,cache_write:25,tier:{type:"context",size:272e3}}],context_over_200k:{input:20,output:75,cache_read:2,cache_write:25}},"opencode/grok-4.5":{input:2,output:6,cache_read:.3,tiers:[{input:4,output:12,cache_read:.6,tier:{type:"context",size:2e5}}],context_over_200k:{input:4,output:12,cache_read:.6}},"opencode/kimi-k2.5":{input:.6,output:3,cache_read:.08},"opencode/gpt-5.1":{input:1.07,output:8.5,cache_read:.107},"opencode/claude-opus-5":{input:5,output:25,cache_read:.5,cache_write:6.25},"opencode/claude-3-5-haiku":{input:.8,output:4,cache_read:.08,cache_write:1},"opencode/gemini-3-flash":{input:.5,output:3,cache_read:.05},"opencode/minimax-m2.7":{input:.3,output:1.2,cache_read:.06},"opencode/gemini-3.5-flash":{input:1.5,output:9,cache_read:.15,input_audio:1.5},"opencode/claude-fable-5":{input:10,output:50,cache_read:1,cache_write:12.5},"opencode/gemini-3-pro":{input:2,output:12,cache_read:.2,tiers:[{input:4,output:18,cache_read:.4,tier:{type:"context",size:2e5}}],context_over_200k:{input:4,output:18,cache_read:.4}},"opencode/claude-sonnet-4":{input:3,output:15,cache_read:.3,cache_write:3.75,tiers:[{input:6,output:22.5,cache_read:.6,cache_write:7.5,tier:{type:"context",size:2e5}}],context_over_200k:{input:6,output:22.5,cache_read:.6,cache_write:7.5}},"opencode/muse-spark-1.2":{input:1.25,output:4.25,cache_read:.15},"opencode/gpt-5.4-mini":{input:.75,output:4.5,cache_read:.075},"opencode/glm-4.7":{input:.6,output:2.2,cache_read:.1},"opencode/minimax-m3":{input:.3,output:1.2,cache_read:.06},"opencode/gpt-5.6-luna":{input:.2,output:1.2,cache_read:.02,cache_write:.25,tiers:[{input:.4,output:1.8,cache_read:.04,cache_write:.5,tier:{type:"context",size:272e3}}],context_over_200k:{input:.4,output:1.8,cache_read:.04,cache_write:.5}},"opencode/qwen3.8-flash":{input:.15,output:.47,cache_read:.016,cache_write:.2},"opencode/gpt-5.1-codex-max":{input:1.25,output:10,cache_read:.125},"opencode/gpt-5.2":{input:1.75,output:14,cache_read:.175},"opencode/claude-opus-4-8":{input:5,output:25,cache_read:.5,cache_write:6.25},"opencode/gpt-5.5":{input:5,output:30,cache_read:.5,tiers:[{input:10,output:45,cache_read:1,tier:{type:"context",size:272e3}}],context_over_200k:{input:10,output:45,cache_read:1}},"opencode/claude-sonnet-5":{input:2,output:10,cache_read:.2,cache_write:2.5},"opencode/claude-opus-4-6":{input:5,output:25,cache_read:.5,cache_write:6.25},"opencode/gemini-3.7-flash":{input:1.5,output:7.5,cache_read:.15,input_audio:1.5},"opencode/glm-5.2":{input:1.4,output:4.4,cache_read:.26},"opencode/kimi-k2":{input:.4,output:2.5,cache_read:.4},"opencode/glm-5.1":{input:1.4,output:4.4,cache_read:.26},"opencode/grok-build-0.1":{input:1,output:2,cache_read:.2},"opencode/gemini-3.8-flash":{input:1.5,output:7.5,cache_read:.15,input_audio:1.5},"opencode/gpt-6-luna":{input:.1,output:.5,cache_read:.01,cache_write:.125,tiers:[{input:.2,output:.75,cache_read:.02,cache_write:.25,tier:{type:"context",size:272e3}}],context_over_200k:{input:.2,output:.75,cache_read:.02,cache_write:.25}},"opencode/deepseek-v4-pro":{input:1.74,output:3.84,cache_read:.145},"opencode/claude-sonnet-4-6":{input:3,output:15,cache_read:.3,cache_write:3.75},"opencode/qwen3.6-plus":{input:.5,output:3,cache_read:.05,cache_write:.625},"opencode/gpt-5.6-terra":{input:2.5,output:15,cache_read:.25,cache_write:3.125,tiers:[{input:5,output:22.5,cache_read:.5,cache_write:6.25,tier:{type:"context",size:272e3}}],context_over_200k:{input:5,output:22.5,cache_read:.5,cache_write:6.25}},"opencode/gpt-5.1-codex-mini":{input:.25,output:2,cache_read:.025},"opencode/glm-5.3":{input:1.4,output:4.4,cache_read:.26},"opencode/claude-opus-4-7":{input:5,output:25,cache_read:.5,cache_write:6.25},"opencode/kimi-k2.7-code":{input:.95,output:4,cache_read:.19},"opencode/gpt-5":{input:1.07,output:8.5,cache_read:.107},"opencode/grok-4.6":{input:2,output:6,cache_read:.5,tiers:[{input:4,output:12,cache_read:1,tier:{type:"context",size:2e5}}],context_over_200k:{input:4,output:12,cache_read:1}},"opencode/gemini-3.1-pro":{input:2,output:12,cache_read:.2,tiers:[{input:4,output:18,cache_read:.4,tier:{type:"context",size:2e5}}],context_over_200k:{input:4,output:18,cache_read:.4}},"opencode/minimax-m2.1":{input:.3,output:1.2,cache_read:.1},"opencode/gpt-5.6-sol":{input:4,output:20,cache_read:.4,cache_write:5,tiers:[{input:8,output:30,cache_read:.8,cache_write:10,tier:{type:"context",size:272e3}}],context_over_200k:{input:8,output:30,cache_read:.8,cache_write:10}},"opencode/deepseek-v4-flash":{input:.14,output:.28,cache_read:.028},"opencode/gpt-6-sol":{input:2,output:10,cache_read:.2,cache_write:2.5,tiers:[{input:4,output:15,cache_read:.4,cache_write:5,tier:{type:"context",size:272e3}}],context_over_200k:{input:4,output:15,cache_read:.4,cache_write:5}},"wafer.ai/Kimi-K2.6":{input:1.14,output:4.8,cache_read:.19,cache_write:0},"wafer.ai/MiniMax-M3":{input:.33,output:1.32,cache_read:.07,cache_write:0,tiers:[{input:.66,output:2.64,cache_read:.13,cache_write:0,tier:{type:"context",size:512e3}}],context_over_200k:{input:.66,output:2.64,cache_read:.13,cache_write:0}},"wafer.ai/GLM-5.1":{input:1,output:3.2,cache_read:.1,cache_write:0},"wafer.ai/GLM-5.2":{input:1.2,output:4.1,cache_read:.2,cache_write:0},"wafer.ai/glm5.2-fast":{input:3,output:10.25,cache_read:.5,cache_write:0},"zhipuai/glm-5v-turbo":{input:5,output:22,cache_read:1.2,cache_write:0},"zhipuai/glm-5.3-flash":{input:.15,output:.5,cache_read:.03,cache_write:0},"zhipuai/glm-5":{input:1,output:3.2,cache_read:.2,cache_write:0},"zhipuai/glm-5.3-flashx":{input:.37,output:1.25,cache_read:.075,cache_write:0},"zhipuai/glm-5.2":{input:1.4,output:4.4,cache_read:.26,cache_write:0},"zhipuai/glm-5.1":{input:1.4,output:4.4,cache_read:.26,cache_write:0},"zhipuai/glm-5.3":{input:1.4,output:4.4,cache_read:.26,cache_write:0},"zhipuai/glm-4.5-air":{input:.2,output:1.1,cache_read:.03,cache_write:0},"zhipuai/glm-4.7-flashx":{input:.07,output:.4,cache_read:.01,cache_write:0},"zhipuai/glm-4.7":{input:.6,output:2.2,cache_read:.11,cache_write:0},"zhipuai/glm-4.5v":{input:.6,output:1.8},"zhipuai/glm-4.6":{input:.6,output:2.2,cache_read:.11,cache_write:0},"zhipuai/glm-4.5":{input:.6,output:2.2,cache_read:.11,cache_write:0},"zhipuai/glm-4.6v":{input:.3,output:.9},"meganova/meta-llama/Llama-3.3-70B-Instruct":{input:.1,output:.3},"meganova/XiaomiMiMo/MiMo-V2-Flash":{input:.1,output:.3},"meganova/Qwen/Qwen3.5-Plus":{input:.4,output:2.4,reasoning:2.4},"meganova/Qwen/Qwen3-235B-A22B-Instruct-2507":{input:.09,output:.6},"meganova/Qwen/Qwen2.5-VL-32B-Instruct":{input:.2,output:.6},"meganova/deepseek-ai/DeepSeek-V3.1":{input:.27,output:1},"meganova/deepseek-ai/DeepSeek-V3.2":{input:.26,output:.38},"meganova/deepseek-ai/DeepSeek-R1-0528":{input:.5,output:2.15},"meganova/deepseek-ai/DeepSeek-V3-0324":{input:.25,output:.88},"meganova/deepseek-ai/DeepSeek-V3.2-Exp":{input:.27,output:.4},"meganova/MiniMaxAI/MiniMax-M2.1":{input:.28,output:1.2},"meganova/MiniMaxAI/MiniMax-M2.5":{input:.3,output:1.2},"meganova/mistralai/Mistral-Nemo-Instruct-2407":{input:.02,output:.04},"meganova/moonshotai/Kimi-K2.5":{input:.45,output:2.8},"meganova/moonshotai/Kimi-K2-Thinking":{input:.6,output:2.6},"meganova/zai-org/GLM-4.7":{input:.2,output:.8},"meganova/zai-org/GLM-5":{input:.8,output:2.56},"meganova/zai-org/GLM-4.6":{input:.45,output:1.9},"ovhcloud/qwen3.8-27b":{input:.47,output:3.19},"ovhcloud/mistral-7b-instruct-v0.3":{input:.11,output:.11},"ovhcloud/qwen3-coder-30b-a3b-instruct":{input:.07,output:.26},"ovhcloud/gpt-oss-20b":{input:.05,output:.18},"ovhcloud/qwen3.5-9b":{input:.12,output:.18},"ovhcloud/meta-llama-3_3-70b-instruct":{input:.74,output:.74},"ovhcloud/qwen3.5-397b-a17b":{input:.71,output:4.25},"ovhcloud/qwen2.5-vl-72b-instruct":{input:1.01,output:1.01},"ovhcloud/qwen3.6-27b":{input:.47,output:3.19},"ovhcloud/mistral-small-3.2-24b-instruct-2506":{input:.1,output:.31},"ovhcloud/gpt-oss-120b":{input:.09,output:.47},"ovhcloud/mistral-nemo-instruct-2407":{input:.14,output:.14},"requesty/ring-2.6-1t":{input:.3,output:2.5},"requesty/gpt-5.4":{input:2.75,output:16.5,cache_read:.275},"requesty/nemotron-3-ultra-nvfp4":{input:.6,output:2.4,cache_read:.12},"requesty/claude-haiku-4-5":{input:1,output:5,cache_read:.1,cache_write:1.25},"requesty/gpt-5.4-pro":{input:30,output:180,cache_read:30},"requesty/claude-opus-5@eu":{input:5.5,output:27.5,cache_read:.55,cache_write:6.875},"requesty/ling-2.6-1t":{input:.3,output:2.5},"requesty/gpt-4o-mini@eu":{input:.165,output:.66,cache_read:.0825},"requesty/qwen3.7-max":{input:2.5,output:7.5,cache_read:.25,cache_write:3.125},"requesty/mimo-v2.5":{input:.14,output:.28,cache_read:.0028},"requesty/gpt-5.5-pro":{input:30,output:180},"requesty/mistral-medium-3-5@eu":{input:1.65,output:8.25,cache_read:1.65},"requesty/gpt-5.4-nano":{input:.2,output:1.25,cache_read:.02},"requesty/gpt-5@eu":{input:1.375,output:11,cache_read:.1375},"requesty/deepseek-v4-flash-0731@eu":{input:.28,output:.56,cache_read:.07},"requesty/seed-2.0-pro":{input:.5,output:3,cache_read:.1},"requesty/kimi-k3@eu":{input:3,output:15,cache_read:.45},"requesty/seed-1.8":{input:.25,output:2,cache_read:.05},"requesty/glm-5.3-flash":{input:.2,output:.6,cache_read:.07},"requesty/qwen3.5-27b":{input:.26,output:2.6},"requesty/mistral-medium-latest@eu":{input:.44,output:2.2,cache_read:.44},"requesty/glm-5.2-fast":{input:2.1,output:6.6,cache_read:.21},"requesty/deepseek-v4-flash-0731":{input:.28,output:.56,cache_read:.07},"requesty/deepseek-v4-pro-0813@eu":{input:1.75,output:3.5,cache_read:.44},"requesty/inkling-256k":{input:1.87,output:4.68,cache_read:.374},"requesty/claude-opus-4-8@eu":{input:5.5,output:27.5,cache_read:.55,cache_write:6.875},"requesty/qwen3.8-max":{input:2,output:6,cache_read:.25,cache_write:2.5},"requesty/kimi-k3":{input:3,output:15,cache_read:.45},"requesty/claude-fable-5@eu":{input:11,output:55,cache_read:1.1,cache_write:13.75},"requesty/nemotron-3-nano-omni@eu":{input:.06,output:.24,cache_read:.06},"requesty/gpt-4.1@eu":{input:2.2,output:8.8,cache_read:.55},"requesty/gemini-3.1-flash-lite@eu":{input:.275,output:1.65,cache_read:.0275,cache_write:.091663},"requesty/nvidia-nemotron-3-super-120b-a12b":{input:.1,output:.5},"requesty/gemini-3.5-flash-lite@eu":{input:.33,output:2.75,cache_read:.033},"requesty/claude-opus-4-5":{input:5,output:25,cache_read:.5,cache_write:6.25},"requesty/kimi-k2.7-code@eu":{input:1.25,output:4.5,cache_read:.31},"requesty/deepseek-v4.1-flash":{input:.5,output:1.5,cache_read:.05},"requesty/glm-5.1@eu":{input:1.4,output:4.4,cache_read:1.4},"requesty/gpt-5.3-codex":{input:1.75,output:14,cache_read:.175},"requesty/claude-haiku-4-5@eu":{input:1.1,output:5.5,cache_read:.11,cache_write:1.375},"requesty/claude-sonnet-4-5@eu":{input:3.3,output:16.5,cache_read:.3,cache_write:4.125,tiers:[{input:6.6,output:24.75,cache_read:.6,cache_write:8.25,tier:{type:"context",size:2e5}}],context_over_200k:{input:6.6,output:24.75,cache_read:.6,cache_write:8.25}},"requesty/kimi-k2.6":{input:.95,output:4,cache_read:.16},"requesty/claude-sonnet-4-5":{input:3,output:15,cache_read:.3,cache_write:3.75,tiers:[{input:6,output:22.5,cache_read:.6,cache_write:7.5,tier:{type:"context",size:2e5}}],context_over_200k:{input:6,output:22.5,cache_read:.6,cache_write:7.5}},"requesty/claude-opus-5-5":{input:4,output:20,cache_read:.2,cache_write:5},"requesty/claude-sonnet-4-6@eu":{input:3.3,output:16.5,cache_read:.3,cache_write:4.125},"requesty/gemini-3.6-flash":{input:1.5,output:7,cache_read:.15},"requesty/gpt-5.5@eu":{input:5,output:30,cache_read:.5,tiers:[{input:10,output:45,cache_read:1,tier:{type:"context",size:272e3}}],context_over_200k:{input:10,output:45,cache_read:1}},"requesty/claude-opus-5-5@eu":{input:4.4,output:22,cache_read:.22,cache_write:5.5},"requesty/gpt-5-mini@eu":{input:.275,output:2.2,cache_read:.0275},"requesty/mistral-medium-3-5":{input:1.65,output:8.25,cache_read:1.65},"requesty/grok-4.3":{input:1.25,output:2.5,cache_read:.2,cache_write:1.25,tiers:[{input:2.5,output:5,cache_read:.4,cache_write:2.5,tier:{type:"context",size:2e5}}],context_over_200k:{input:2.5,output:5,cache_read:.4,cache_write:2.5}},"requesty/gemma-4-26b-a4b-it":{input:.07,output:.34,cache_read:.07},"requesty/gemini-3.5-flash-lite":{input:.3,output:2.5,cache_read:.03},"requesty/gpt-5.4@eu":{input:2.5,output:15,cache_read:.25,tiers:[{input:5,output:22.5,cache_read:.5,tier:{type:"context",size:272e3}}],context_over_200k:{input:5,output:22.5,cache_read:.5}},"requesty/claude-opus-4-1":{input:15,output:75,cache_read:1.5,cache_write:18.75},"requesty/grok-4.2-beta":{input:2,output:6,cache_read:.2,cache_write:2,tiers:[{input:4,output:12,cache_read:.4,cache_write:4,tier:{type:"context",size:2e5}}],context_over_200k:{input:4,output:12,cache_read:.4,cache_write:4}},"requesty/gemini-3.1-flash-image":{input:.5,output:2},"requesty/nemotron-lightning-3.5-30b-a3b":{input:.05,output:.2,cache_read:.01},"requesty/gpt-5-nano@eu":{input:.055,output:.44,cache_read:.0055},"requesty/gpt-6-astra":{input:10,output:50,cache_read:1,tiers:[{input:20,output:75,cache_read:2,tier:{type:"context",size:272e3}}],context_over_200k:{input:20,output:75,cache_read:2}},"requesty/gemini-3.1-pro-preview":{input:2,output:12,cache_read:.2,cache_write:4.5,tiers:[{input:4,output:18,cache_read:.4,cache_write:9,tier:{type:"context",size:2e5}}],context_over_200k:{input:4,output:18,cache_read:.4,cache_write:9}},"requesty/grok-4.5":{input:2,output:6,cache_read:.5,cache_write:2,tiers:[{input:4,output:12,cache_read:1,cache_write:4,tier:{type:"context",size:2e5}}],context_over_200k:{input:4,output:12,cache_read:1,cache_write:4}},"requesty/seed-2.0-mini":{input:.1,output:.4,cache_read:.02},"requesty/claude-opus-5":{input:5,output:25,cache_read:.5,cache_write:6.25},"requesty/kimi-k2.6@eu":{input:.95,output:4,cache_read:.95},"requesty/qwen3.5-2b":{input:.02,output:.1},"requesty/fugu-ultra":{input:5,output:30,cache_read:.5,tiers:[{input:10,output:45,cache_read:1,tier:{type:"context",size:272e3}}],context_over_200k:{input:10,output:45,cache_read:1}},"requesty/minimax-m2.7":{input:.3,output:1.2,cache_read:.06,cache_write:1.2},"requesty/gemini-3.5-flash":{input:1.5,output:9,cache_read:.15,cache_write:1.583},"requesty/ling-2.6-flash":{input:.1,output:.3},"requesty/gemini-3-pro-image":{input:2,output:12,cache_read:.2,cache_write:4.5},"requesty/gemini-3.7-flash@eu":{input:.825,output:4.125,cache_read:.0825},"requesty/claude-fable-5.1":{input:10,output:50,cache_read:.25,cache_write:12.5},"requesty/claude-fable-5":{input:10,output:50,cache_read:1,cache_write:12.5},"requesty/deepseek-v4-pro-0813":{input:1.32,output:3.96,cache_read:.044},"requesty/gpt-4.1-nano@eu":{input:.11,output:.44,cache_read:.0275},"requesty/mimo-v2.5-pro":{input:.435,output:.87,cache_read:.0036},"requesty/gpt-5.1@eu":{input:1.375,output:11,cache_read:.1375},"requesty/gemini-2.5-flash-lite@eu":{input:.1,output:.4,cache_read:.01,cache_write:.18333},"requesty/nemotron-3-nano-omni":{input:.06,output:.24,cache_read:.06},"requesty/claude-sonnet-4@eu":{input:3,output:15,cache_read:.3,cache_write:3.75,tiers:[{input:6,output:22.5,cache_read:.6,cache_write:7.5,tier:{type:"context",size:2e5}}],context_over_200k:{input:6,output:22.5,cache_read:.6,cache_write:7.5}},"requesty/inkling":{input:1.87,output:4.68,cache_read:.374},"requesty/gpt-5.4-mini":{input:.75,output:4.5,cache_read:.075},"requesty/deepseek-v4.1-flash@eu":{input:.5,output:1.5,cache_read:.05},"requesty/minimax-m3":{input:.3,output:1.2,cache_read:.06},"requesty/gpt-5.6-luna":{input:.2,output:1.2,cache_read:.02,tiers:[{input:.4,output:1.8,cache_read:.04,tier:{type:"context",size:272e3}}],context_over_200k:{input:.4,output:1.8,cache_read:.04}},"requesty/qwen3.8-2.4T-A95B@eu":{input:2.5,output:6,cache_read:.63},"requesty/qwen3.8-flash":{input:.16,output:.47,cache_read:.016,cache_write:.2},"requesty/qwen3.8-flash-next":{input:.2,output:.5,cache_read:.05},"requesty/qwen3.8-flash-next@eu":{input:.2,output:.5,cache_read:.05},"requesty/mistral-small-2603":{input:.165,output:.66,cache_read:.165},"requesty/claude-opus-4-8":{input:5,output:25,cache_read:.5,cache_write:6.25},"requesty/gpt-5.5":{input:5.5,output:33,cache_read:.55},"requesty/claude-sonnet-5@eu":{input:2.2,output:11,cache_read:.22,cache_write:2.75},"requesty/gemini-3.8-flash@eu":{input:.825,output:4.125,cache_read:.0825},"requesty/claude-sonnet-5":{input:2,output:10,cache_read:.2,cache_write:2.5},"requesty/qwen3.5-35b-a3b":{input:.14,output:1,cache_read:.05},"requesty/glm-5.3@eu":{input:1.2,output:4.2,cache_read:.26},"requesty/gemini-2.5-flash@eu":{input:.3,output:2.5,cache_read:.075,cache_write:.55},"requesty/claude-opus-4-6":{input:5,output:25,cache_read:.5,cache_write:6.25},"requesty/gemini-3.7-flash":{input:.75,output:3.75,cache_read:.075},"requesty/glm-5.2":{input:.8,output:2.55,cache_read:.16},"requesty/hy3":{input:.14,output:.58,cache_read:.035},"requesty/glm-5.2@eu":{input:1.2,output:4.2,cache_read:.26},"requesty/gpt-5.6-sol@eu":{input:4.4,output:22,cache_read:.44},"requesty/seed-2.0-code":{input:.5,output:3,cache_read:.1},"requesty/devstral-latest@eu":{input:.44,output:2.2,cache_read:.44},"requesty/glm-5.1":{input:1.4,output:4.4,cache_read:.26},"requesty/gemini-2.5-pro@eu":{input:1.25,output:10,cache_read:.31,cache_write:2.375,tiers:[{input:2.5,output:15,cache_read:.62,cache_write:4.75,tier:{type:"context",size:2e5}}],context_over_200k:{input:2.5,output:15,cache_read:.62,cache_write:4.75}},"requesty/gpt-5.6-terra@eu":{input:2.2,output:13.2,cache_read:.22},"requesty/grok-build-0.1":{input:1,output:2,cache_read:.1},"requesty/glm-5.3-flash@eu":{input:.2,output:.6,cache_read:.07},"requesty/minimax-m2.7-highspeed":{input:.6,output:2.4,cache_read:.06,cache_write:1.2},"requesty/deepseek-v4-pro@eu":{input:1.75,output:3.5,cache_read:.44},"requesty/devstral-latest":{input:.44,output:2.2,cache_read:.44},"requesty/o4-mini@eu":{input:1.21,output:4.84,cache_read:.3025},"requesty/mistral-small-2603@eu":{input:.165,output:.66,cache_read:.165},"requesty/qwen3.8-2.4T-A95B":{input:2,output:6,cache_read:.2},"requesty/gemini-3.8-flash":{input:.75,output:3.75,cache_read:.075},"requesty/gemini-3.5-flash@eu":{input:1.65,output:9.9,cache_read:.165,cache_write:1.7413},"requesty/gpt-6-luna":{input:.1,output:.5,cache_read:.01,tiers:[{input:.2,output:.75,cache_read:.02,tier:{type:"context",size:272e3}}],context_over_200k:{input:.2,output:.75,cache_read:.02}},"requesty/deepseek-v4-pro":{input:1.32,output:3.96,cache_read:.044},"requesty/nvidia-nemotron-3-ultra":{input:.5,output:2.5},"requesty/claude-fable-5.1@eu":{input:11,output:55,cache_read:.275,cache_write:13.75},"requesty/step-3.7-flash":{input:.2,output:1.15,cache_read:.04},"requesty/gpt-6-luna@eu":{input:.12,output:.6,cache_read:.012,tiers:[{input:.24,output:.9,cache_read:.024,tier:{type:"context",size:272e3}}],context_over_200k:{input:.24,output:.9,cache_read:.024}},"requesty/claude-opus-4-6@eu":{input:5.5,output:27.5,cache_read:.55,cache_write:6.875},"requesty/claude-sonnet-4-6":{input:3,output:15,cache_read:.3,cache_write:3.75},"requesty/qwen3.6-plus":{input:.5,output:3,cache_read:.05,cache_write:.625},"requesty/gpt-5.6-luna@eu":{input:.22,output:1.32,cache_read:.022},"requesty/claude-opus-4-7@eu":{input:5.5,output:27.5,cache_read:.55,cache_write:6.875},"requesty/gpt-5.6-terra":{input:2,output:12,cache_read:.2,tiers:[{input:4,output:18,cache_read:.4,tier:{type:"context",size:272e3}}],context_over_200k:{input:4,output:18,cache_read:.4}},"requesty/kat-coder-pro":{input:.3,output:1.2},"requesty/gpt-6-sol@eu":{input:2.4,output:12,cache_read:.24,tiers:[{input:4.8,output:18,cache_read:.48,tier:{type:"context",size:272e3}}],context_over_200k:{input:4.8,output:18,cache_read:.48}},"requesty/glm-5.3":{input:1.2,output:4.2,cache_read:.26},"requesty/claude-opus-4-7":{input:5,output:25,cache_read:.5,cache_write:6.25},"requesty/kimi-k2.7-code":{input:.95,output:4,cache_read:.19},"requesty/grok-4.6":{input:2,output:6,cache_read:.5,cache_write:2,tiers:[{input:4,output:12,cache_read:1,cache_write:4,tier:{type:"context",size:2e5}}],context_over_200k:{input:4,output:12,cache_read:1,cache_write:4}},"requesty/minimax-m3@eu":{input:.4,output:2,cache_read:.1},"requesty/qwen3.7-plus":{input:.32,output:1.28,cache_read:.032,cache_write:.4},"requesty/gpt-4.1-mini@eu":{input:.44,output:1.76,cache_read:.11},"requesty/gpt-5.6-sol":{input:4,output:20,cache_read:.4,cache_write:5,tiers:[{input:8,output:30,cache_read:.8,cache_write:10,tier:{type:"context",size:272e3}}],context_over_200k:{input:8,output:30,cache_read:.8,cache_write:10}},"requesty/claude-opus-4-5@eu":{input:5.5,output:27.5,cache_read:.55,cache_write:6.875},"requesty/deepseek-v4-flash":{input:.28,output:.56,cache_read:.07},"requesty/mistral-medium-latest":{input:.44,output:2.2,cache_read:.44},"requesty/gpt-6-sol":{input:2,output:10,cache_read:.2,tiers:[{input:4,output:15,cache_read:.4,tier:{type:"context",size:272e3}}],context_over_200k:{input:4,output:15,cache_read:.4}},"requesty/gemini-3.1-flash-lite":{input:.25,output:1.5,cache_read:.025,cache_write:.08333},"mistral/open-mistral-nemo":{input:.15,output:.15},"mistral/codestral-latest":{input:.3,output:.9},"mistral/mistral-large-2411":{input:2,output:6},"mistral/mistral-nemo":{input:.15,output:.15},"mistral/mistral-medium-2508":{input:.4,output:2},"mistral/mistral-large-latest":{input:.5,output:1.5},"mistral/mistral-small-latest":{input:.15,output:.6},"mistral/zai-glm-5-2":{input:1.4,output:4.4,cache_read:.14},"mistral/ministral-8b-latest":{input:.1,output:.1},"mistral/devstral-medium-latest":{input:.4,output:2},"mistral/open-mixtral-8x22b":{input:2,output:6},"mistral/devstral-2512":{input:.4,output:2},"mistral/mistral-medium-2505":{input:.4,output:2},"mistral/magistral-medium-latest":{input:2,output:5},"mistral/pixtral-12b":{input:.15,output:.15},"mistral/mistral-embed":{input:.1,output:0},"mistral/devstral-small-2505":{input:.1,output:.3},"mistral/mistral-small-2603":{input:.15,output:.6},"mistral/devstral-medium-2507":{input:.4,output:2},"mistral/magistral-small":{input:.5,output:1.5},"mistral/mistral-large-2512":{input:.5,output:1.5},"mistral/devstral-latest":{input:.4,output:2},"mistral/devstral-small-2507":{input:.1,output:.3},"mistral/pixtral-large-latest":{input:2,output:6},"mistral/voxtral-small-latest":{input:.1,output:.3},"mistral/open-mixtral-8x7b":{input:.7,output:.7},"mistral/mistral-small-2506":{input:.1,output:.3},"mistral/zai-glm-5-3":{input:1.4,output:4.4,cache_read:.14},"mistral/mistral-medium-2604":{input:1.5,output:7.5},"mistral/open-mistral-7b":{input:.25,output:.25},"mistral/ministral-3b-latest":{input:.04,output:.04},"mistral/mistral-medium-latest":{input:1.5,output:7.5},"amazon-bedrock/google.gemma-3-12b-it":{input:.09,output:.29},"amazon-bedrock/google.gemma-3-4b-it":{input:.04,output:.08},"amazon-bedrock/eu.anthropic.claude-fable-5":{input:11,output:55,cache_read:1.1,cache_write:13.75},"amazon-bedrock/qwen.qwen3-coder-480b-a35b-v1:0":{input:.45,output:1.8},"amazon-bedrock/google.gemma-4-31b":{input:.14,output:.4},"amazon-bedrock/us.writer.palmyra-x5-v1:0":{input:.6,output:6},"amazon-bedrock/google.gemma-4-e2b":{input:.04,output:.08},"amazon-bedrock/us.anthropic.claude-opus-4-7":{input:5.5,output:27.5,cache_read:.55,cache_write:6.875},"amazon-bedrock/global.openai.gpt-6-astra":{input:10,output:50,cache_read:1,cache_write:12.5,tiers:[{input:20,output:75,cache_read:2,cache_write:25,tier:{type:"context",size:272e3}}],context_over_200k:{input:20,output:75,cache_read:2,cache_write:25}},"amazon-bedrock/eu.amazon.nova-lite-v1:0":{input:.069,output:.276,cache_read:.01725,cache_write:.069},"amazon-bedrock/global.anthropic.claude-opus-5-5":{input:4,output:20,cache_read:.2,cache_write:5},"amazon-bedrock/deepseek.r1-v1:0":{input:1.35,output:5.4},"amazon-bedrock/openai.gpt-oss-safeguard-20b":{input:.07,output:.2},"amazon-bedrock/anthropic.claude-opus-5-5":{input:4,output:20,cache_read:.2,cache_write:5},"amazon-bedrock/global.anthropic.claude-haiku-4-5-20251001-v1:0":{input:1,output:5,cache_read:.1,cache_write:1.25},"amazon-bedrock/eu.amazon.nova-2-lite-v1:0":{input:.374,output:3.157,cache_read:.0935,cache_write:.374},"amazon-bedrock/us.amazon.nova-pro-v1:0":{input:.8,output:3.2,cache_read:.2,cache_write:.8},"amazon-bedrock/jp.anthropic.claude-opus-5-5":{input:4.4,output:22,cache_read:.22,cache_write:5.5},"amazon-bedrock/openai.gpt-5.6-luna":{input:.22,output:1.32,cache_read:.022,cache_write:.275,tiers:[{input:.44,output:1.98,cache_read:.044,cache_write:.55,tier:{type:"context",size:272e3}}],context_over_200k:{input:.44,output:1.98,cache_read:.044,cache_write:.55}},"amazon-bedrock/us.meta.llama4-maverick-17b-instruct-v1:0":{input:.24,output:.97},"amazon-bedrock/apac.amazon.nova-micro-v1:0":{input:.037,output:.148,cache_read:.00925,cache_write:.037},"amazon-bedrock/eu.anthropic.claude-sonnet-4-20250514-v1:0":{input:3,output:15,cache_read:.3,cache_write:3.75},"amazon-bedrock/eu.anthropic.claude-opus-4-5-20251101-v1:0":{input:5.5,output:27.5,cache_read:.55,cache_write:6.875},"amazon-bedrock/global.openai.gpt-6-sol":{input:2,output:10,cache_read:.2,cache_write:2.5,tiers:[{input:4,output:15,cache_read:.4,cache_write:5,tier:{type:"context",size:272e3}}],context_over_200k:{input:4,output:15,cache_read:.4,cache_write:5}},"amazon-bedrock/qwen.qwen3-coder-30b-a3b-v1:0":{input:.15,output:.6},"amazon-bedrock/us.amazon.nova-premier-v1:0":{input:2.5,output:12.5,cache_read:.625,cache_write:2.5},"amazon-bedrock/anthropic.claude-sonnet-4-6":{input:3.3,output:16.5,cache_read:.33,cache_write:4.125},"amazon-bedrock/meta.llama3-1-70b-instruct-v1:0":{input:.72,output:.72},"amazon-bedrock/us.writer.palmyra-x4-v1:0":{input:2.5,output:10},"amazon-bedrock/apac.amazon.nova-pro-v1:0":{input:.84,output:3.36,cache_read:.21,cache_write:.84},"amazon-bedrock/global.anthropic.claude-fable-5-1":{input:10,output:50,cache_read:.25,cache_write:12.5},"amazon-bedrock/us.anthropic.claude-sonnet-5":{input:2.2,output:11,cache_read:.22,cache_write:2.75},"amazon-bedrock/amazon.nova-micro-v1:0":{input:.035,output:.14,cache_read:.00875,cache_write:.035},"amazon-bedrock/minimax.minimax-m2.5":{input:.3,output:1.2},"amazon-bedrock/xai.grok-4.3":{input:1.25,output:2.5,cache_read:.2},"amazon-bedrock/us.amazon.nova-lite-v1:0":{input:.06,output:.24,cache_read:.015,cache_write:.06},"amazon-bedrock/amazon.nova-pro-v1:0":{input:.8,output:3.2,cache_read:.2,cache_write:.8},"amazon-bedrock/qwen.qwen3-32b-v1:0":{input:.15,output:.6},"amazon-bedrock/openai.gpt-5.5":{input:5.5,output:33,cache_read:.55},"amazon-bedrock/mistral.voxtral-small-24b-2507":{input:.1,output:.3},"amazon-bedrock/global.amazon.nova-2-lite-v1:0":{input:.3,output:2.5,cache_read:.075,cache_write:.3},"amazon-bedrock/us.openai.gpt-5.6-terra":{input:2.2,output:13.2,cache_read:.22,cache_write:2.75,tiers:[{input:4.4,output:19.8,cache_read:.44,cache_write:5.5,tier:{type:"context",size:272e3}}],context_over_200k:{input:4.4,output:19.8,cache_read:.44,cache_write:5.5}},"amazon-bedrock/mistral.devstral-2-123b":{input:.4,output:2},"amazon-bedrock/us.xai.grok-4.6":{input:2.2,output:6.6,cache_read:.55},"amazon-bedrock/jp.anthropic.claude-sonnet-4-5-20250929-v1:0":{input:3.3,output:16.5,cache_read:.33,cache_write:4.125},"amazon-bedrock/anthropic.claude-fable-5":{input:10,output:50,cache_read:1,cache_write:12.5},"amazon-bedrock/anthropic.claude-sonnet-4-5-20250929-v1:0":{input:3,output:15,cache_read:.3,cache_write:3.75},"amazon-bedrock/jp.anthropic.claude-opus-4-8":{input:5.5,output:27.5,cache_read:.55,cache_write:6.875},"amazon-bedrock/us.openai.gpt-5.6-luna":{input:.22,output:1.32,cache_read:.022,cache_write:.275,tiers:[{input:.44,output:1.98,cache_read:.044,cache_write:.55,tier:{type:"context",size:272e3}}],context_over_200k:{input:.44,output:1.98,cache_read:.044,cache_write:.55}},"amazon-bedrock/us.anthropic.claude-sonnet-4-5-20250929-v1:0":{input:3.3,output:16.5,cache_read:.33,cache_write:4.125},"amazon-bedrock/au.anthropic.claude-opus-5":{input:5.5,output:27.5,cache_read:.55,cache_write:6.875},"amazon-bedrock/nvidia.nemotron-nano-12b-v2":{input:.2,output:.6},"amazon-bedrock/us.amazon.nova-2-lite-v1:0":{input:.33,output:2.75,cache_read:.0825,cache_write:.33},"amazon-bedrock/us.openai.gpt-6-astra":{input:11,output:55,cache_read:1.1,cache_write:13.75,tiers:[{input:22,output:82.5,cache_read:2.2,cache_write:27.5,tier:{type:"context",size:272e3}}],context_over_200k:{input:22,output:82.5,cache_read:2.2,cache_write:27.5}},"amazon-bedrock/openai.gpt-5.6-terra":{input:2.2,output:13.2,cache_read:.22,cache_write:2.75,tiers:[{input:4.4,output:19.8,cache_read:.44,cache_write:5.5,tier:{type:"context",size:272e3}}],context_over_200k:{input:4.4,output:19.8,cache_read:.44,cache_write:5.5}},"amazon-bedrock/anthropic.claude-opus-4-6-v1":{input:5.5,output:27.5,cache_read:.55,cache_write:6.875},"amazon-bedrock/us.anthropic.claude-opus-4-1-20250805-v1:0":{input:15,output:75,cache_read:1.5,cache_write:18.75},"amazon-bedrock/us.meta.llama3-1-8b-instruct-v1:0":{input:.22,output:.22},"amazon-bedrock/eu.anthropic.claude-haiku-4-5-20251001-v1:0":{input:1.1,output:5.5,cache_read:.11,cache_write:1.375},"amazon-bedrock/global.anthropic.claude-opus-4-7":{input:5,output:25,cache_read:.5,cache_write:6.25},"amazon-bedrock/apac.anthropic.claude-sonnet-4-20250514-v1:0":{input:3,output:15,cache_read:.3,cache_write:3.75},"amazon-bedrock/deepseek.v3.2":{input:.62,output:1.85},"amazon-bedrock/qwen.qwen3-235b-a22b-2507-v1:0":{input:.22,output:.88},"amazon-bedrock/amazon.nova-lite-v1:0":{input:.06,output:.24,cache_read:.015,cache_write:.06},"amazon-bedrock/global.anthropic.claude-opus-5":{input:5,output:25,cache_read:.5,cache_write:6.25},"amazon-bedrock/openai.gpt-oss-20b-1:0":{input:.07,output:.3},"amazon-bedrock/anthropic.claude-opus-5":{input:5,output:25,cache_read:.5,cache_write:6.25},"amazon-bedrock/meta.llama3-3-70b-instruct-v1:0":{input:.72,output:.72},"amazon-bedrock/minimax.minimax-m2":{input:.3,output:1.2},"amazon-bedrock/mistral.mistral-large-3-675b-instruct":{input:.5,output:1.5},"amazon-bedrock/in.openai.gpt-5.6-luna":{input:.22,output:1.32,cache_read:.022,cache_write:.275,tiers:[{input:.44,output:1.98,cache_read:.044,cache_write:.55,tier:{type:"context",size:272e3}}],context_over_200k:{input:.44,output:1.98,cache_read:.044,cache_write:.55}},"amazon-bedrock/eu.anthropic.claude-opus-4-8":{input:5.5,output:27.5,cache_read:.55,cache_write:6.875},"amazon-bedrock/global.anthropic.claude-sonnet-4-5-20250929-v1:0":{input:3,output:15,cache_read:.3,cache_write:3.75},"amazon-bedrock/zai.glm-4.7":{input:.6,output:2.2},"amazon-bedrock/au.anthropic.claude-sonnet-4-5-20250929-v1:0":{input:3.3,output:16.5,cache_read:.33,cache_write:4.125},"amazon-bedrock/eu.anthropic.claude-opus-5-5":{input:4.4,output:22,cache_read:.22,cache_write:5.5},"amazon-bedrock/global.anthropic.claude-sonnet-4-6":{input:3,output:15,cache_read:.3,cache_write:3.75},"amazon-bedrock/jp.anthropic.claude-sonnet-4-6":{input:3.3,output:16.5,cache_read:.33,cache_write:4.125},"amazon-bedrock/google.gemma-3-27b-it":{input:.23,output:.38},"amazon-bedrock/eu.anthropic.claude-opus-4-6-v1":{input:5.5,output:27.5,cache_read:.55,cache_write:6.875},"amazon-bedrock/us.anthropic.claude-opus-5-5":{input:4.4,output:22,cache_read:.22,cache_write:5.5},"amazon-bedrock/us.anthropic.claude-opus-5":{input:5.5,output:27.5,cache_read:.55,cache_write:6.875},"amazon-bedrock/us.openai.gpt-5.6-sol":{input:4.4,output:22,cache_read:.44,cache_write:5.5,tiers:[{input:8.8,output:33,cache_read:.88,cache_write:11,tier:{type:"context",size:272e3}}],context_over_200k:{input:8.8,output:33,cache_read:.88,cache_write:11}},"amazon-bedrock/us.moonshotai.kimi-k3":{input:3.3,output:16.5,cache_read:.33,cache_write:4.125},"amazon-bedrock/anthropic.claude-sonnet-5":{input:2,output:10,cache_read:.2,cache_write:2.5},"amazon-bedrock/mistral.magistral-small-2509":{input:.5,output:1.5},"amazon-bedrock/mistral.pixtral-large-2502-v1:0":{input:2,output:6},"amazon-bedrock/anthropic.claude-opus-4-5-20251101-v1:0":{input:5,output:25,cache_read:.5,cache_write:6.25},"amazon-bedrock/nvidia.nemotron-nano-9b-v2":{input:.06,output:.23},"amazon-bedrock/eu.amazon.nova-micro-v1:0":{input:.04,output:.16,cache_read:.01,cache_write:.04},"amazon-bedrock/zai.glm-5":{input:1,output:3.2},"amazon-bedrock/us.meta.llama3-1-70b-instruct-v1:0":{input:.72,output:.72},"amazon-bedrock/jp.anthropic.claude-haiku-4-5-20251001-v1:0":{input:1.1,output:5.5,cache_read:.11,cache_write:1.375},"amazon-bedrock/nvidia.nemotron-nano-3-30b":{input:.06,output:.24},"amazon-bedrock/mistral.ministral-3-3b-instruct":{input:.1,output:.1},"amazon-bedrock/us.openai.gpt-6-luna":{input:.11,output:.55,cache_read:.011,cache_write:.1375,tiers:[{input:.22,output:.825,cache_read:.022,cache_write:.275,tier:{type:"context",size:272e3}}],context_over_200k:{input:.22,output:.825,cache_read:.022,cache_write:.275}},"amazon-bedrock/global.openai.gpt-5.6-sol":{input:4,output:20,cache_read:.4,cache_write:5,tiers:[{input:8,output:30,cache_read:.8,cache_write:10,tier:{type:"context",size:272e3}}],context_over_200k:{input:8,output:30,cache_read:.8,cache_write:10}},"amazon-bedrock/google.gemma-4-26b-a4b":{input:.13,output:.4},"amazon-bedrock/xai.grok-4.6":{input:2.2,output:6.6,cache_read:.55},"amazon-bedrock/global.xai.grok-4.6":{input:2,output:6,cache_read:.5},"amazon-bedrock/au.anthropic.claude-opus-4-6-v1":{input:5.5,output:27.5,cache_read:.55,cache_write:6.875},"amazon-bedrock/qwen.qwen3-vl-235b-a22b":{input:.53,output:2.66},"amazon-bedrock/anthropic.claude-fable-5-1":{input:10,output:50,cache_read:.25,cache_write:12.5},"amazon-bedrock/jp.anthropic.claude-sonnet-5":{input:2.2,output:11,cache_read:.22,cache_write:2.75},"amazon-bedrock/qwen.qwen3-coder-next":{input:.5,output:1.2},"amazon-bedrock/anthropic.claude-opus-4-8":{input:5,output:25,cache_read:.5,cache_write:6.25},"amazon-bedrock/au.anthropic.claude-sonnet-5":{input:2.2,output:11,cache_read:.22,cache_write:2.75},"amazon-bedrock/meta.llama4-scout-17b-instruct-v1:0":{input:.17,output:.66},"amazon-bedrock/openai.gpt-oss-safeguard-120b":{input:.15,output:.6},"amazon-bedrock/us.meta.llama3-3-70b-instruct-v1:0":{input:.72,output:.72},"amazon-bedrock/global.openai.gpt-5.6-luna":{input:.2,output:1.2,cache_read:.02,cache_write:.25,tiers:[{input:.4,output:1.8,cache_read:.04,cache_write:.5,tier:{type:"context",size:272e3}}],context_over_200k:{input:.4,output:1.8,cache_read:.04,cache_write:.5}},"amazon-bedrock/au.anthropic.claude-sonnet-4-6":{input:3.3,output:16.5,cache_read:.33,cache_write:4.125},"amazon-bedrock/openai.gpt-oss-120b":{input:.15,output:.6},"amazon-bedrock/deepseek.v3-v1:0":{input:.58,output:1.68},"amazon-bedrock/moonshotai.kimi-k2.5":{input:.6,output:3},"amazon-bedrock/eu.anthropic.claude-sonnet-4-6":{input:3.3,output:16.5,cache_read:.33,cache_write:4.125},"amazon-bedrock/us-gov.openai.gpt-oss-120b-1:0":{input:.18,output:.72},"amazon-bedrock/us.anthropic.claude-fable-5":{input:11,output:55,cache_read:1.1,cache_write:13.75},"amazon-bedrock/openai.gpt-6-sol":{input:2.2,output:11,cache_read:.22,cache_write:2.75,tiers:[{input:4.4,output:16.5,cache_read:.44,cache_write:5.5,tier:{type:"context",size:272e3}}],context_over_200k:{input:4.4,output:16.5,cache_read:.44,cache_write:5.5}},"amazon-bedrock/us.deepseek.r1-v1:0":{input:1.35,output:5.4},"amazon-bedrock/eu.anthropic.claude-opus-5":{input:5.5,output:27.5,cache_read:.55,cache_write:6.875},"amazon-bedrock/ca.amazon.nova-lite-v1:0":{input:.064,output:.256,cache_read:.016,cache_write:.064},"amazon-bedrock/us.openai.gpt-6-sol":{input:2.2,output:11,cache_read:.22,cache_write:2.75,tiers:[{input:4.4,output:16.5,cache_read:.44,cache_write:5.5,tier:{type:"context",size:272e3}}],context_over_200k:{input:4.4,output:16.5,cache_read:.44,cache_write:5.5}},"amazon-bedrock/au.anthropic.claude-opus-4-7":{input:5.5,output:27.5,cache_read:.55,cache_write:6.875},"amazon-bedrock/us.meta.llama4-scout-17b-instruct-v1:0":{input:.17,output:.66},"amazon-bedrock/global.anthropic.claude-sonnet-5":{input:2,output:10,cache_read:.2,cache_write:2.5},"amazon-bedrock/global.anthropic.claude-fable-5":{input:10,output:50,cache_read:1,cache_write:12.5},"amazon-bedrock/apac.amazon.nova-lite-v1:0":{input:.063,output:.252,cache_read:.01575,cache_write:.063},"amazon-bedrock/us.anthropic.claude-opus-4-8":{input:5.5,output:27.5,cache_read:.55,cache_write:6.875},"amazon-bedrock/nvidia.nemotron-super-3-120b":{input:.15,output:.65},"amazon-bedrock/global.openai.gpt-6-luna":{input:.1,output:.5,cache_read:.01,cache_write:.125,tiers:[{input:.2,output:.75,cache_read:.02,cache_write:.25,tier:{type:"context",size:272e3}}],context_over_200k:{input:.2,output:.75,cache_read:.02,cache_write:.25}},"amazon-bedrock/us-gov.openai.gpt-oss-20b-1:0":{input:.084,output:.36},"amazon-bedrock/us.anthropic.claude-opus-4-6-v1":{input:5.5,output:27.5,cache_read:.55,cache_write:6.875},"amazon-bedrock/meta.llama3-1-8b-instruct-v1:0":{input:.22,output:.22},"amazon-bedrock/writer.palmyra-x5-v1:0":{input:.6,output:6},"amazon-bedrock/anthropic.claude-opus-4-1-20250805-v1:0":{input:15,output:75,cache_read:1.5,cache_write:18.75},"amazon-bedrock/us.anthropic.claude-sonnet-4-6":{input:3.3,output:16.5,cache_read:.33,cache_write:4.125},"amazon-bedrock/global.anthropic.claude-opus-4-6-v1":{input:5,output:25,cache_read:.5,cache_write:6.25},"amazon-bedrock/eu.anthropic.claude-sonnet-4-5-20250929-v1:0":{input:3.3,output:16.5,cache_read:.33,cache_write:4.125},"amazon-bedrock/jp.anthropic.claude-opus-4-7":{input:5.5,output:27.5,cache_read:.55,cache_write:6.875},"amazon-bedrock/au.anthropic.claude-opus-5-5":{input:4.4,output:22,cache_read:.22,cache_write:5.5},"amazon-bedrock/openai.gpt-6-luna":{input:.11,output:.55,cache_read:.011,cache_write:.1375,tiers:[{input:.22,output:.825,cache_read:.022,cache_write:.275,tier:{type:"context",size:272e3}}],context_over_200k:{input:.22,output:.825,cache_read:.022,cache_write:.275}},"amazon-bedrock/writer.palmyra-x4-v1:0":{input:2.5,output:10},"amazon-bedrock/global.anthropic.claude-opus-4-5-20251101-v1:0":{input:5,output:25,cache_read:.5,cache_write:6.25},"amazon-bedrock/anthropic.claude-opus-4-7":{input:5,output:25,cache_read:.5,cache_write:6.25},"amazon-bedrock/us.anthropic.claude-sonnet-4-20250514-v1:0":{input:3,output:15,cache_read:.3,cache_write:3.75},"amazon-bedrock/anthropic.claude-haiku-4-5-20251001-v1:0":{input:1,output:5,cache_read:.1,cache_write:1.25},"amazon-bedrock/eu.anthropic.claude-sonnet-5":{input:2.2,output:11,cache_read:.22,cache_write:2.75},"amazon-bedrock/zai.glm-4.7-flash":{input:.07,output:.4},"amazon-bedrock/moonshot.kimi-k2-thinking":{input:.6,output:2.5},"amazon-bedrock/eu.amazon.nova-pro-v1:0":{input:.92,output:3.68,cache_read:.23,cache_write:.92},"amazon-bedrock/global.openai.gpt-5.6-terra":{input:2,output:12,cache_read:.2,cache_write:2.5,tiers:[{input:4,output:18,cache_read:.4,cache_write:5,tier:{type:"context",size:272e3}}],context_over_200k:{input:4,output:18,cache_read:.4,cache_write:5}},"amazon-bedrock/openai.gpt-6-astra":{input:11,output:55,cache_read:1.1,cache_write:13.75,tiers:[{input:22,output:82.5,cache_read:2.2,cache_write:27.5,tier:{type:"context",size:272e3}}],context_over_200k:{input:22,output:82.5,cache_read:2.2,cache_write:27.5}},"amazon-bedrock/us.anthropic.claude-haiku-4-5-20251001-v1:0":{input:1.1,output:5.5,cache_read:.11,cache_write:1.375},"amazon-bedrock/meta.llama4-maverick-17b-instruct-v1:0":{input:.24,output:.97},"amazon-bedrock/qwen.qwen3-next-80b-a3b":{input:.15,output:1.2},"amazon-bedrock/eu.mistral.pixtral-large-2502-v1:0":{input:2,output:6},"amazon-bedrock/au.anthropic.claude-opus-4-8":{input:5.5,output:27.5,cache_read:.55,cache_write:6.875},"amazon-bedrock/us.anthropic.claude-fable-5-1":{input:11,output:55,cache_read:.275,cache_write:13.75},"amazon-bedrock/global.moonshotai.kimi-k3":{input:3,output:15,cache_read:.3,cache_write:3.75},"amazon-bedrock/in.openai.gpt-5.6-terra":{input:2.2,output:13.2,cache_read:.22,cache_write:2.75,tiers:[{input:4.4,output:19.8,cache_read:.44,cache_write:5.5,tier:{type:"context",size:272e3}}],context_over_200k:{input:4.4,output:19.8,cache_read:.44,cache_write:5.5}},"amazon-bedrock/openai.gpt-oss-20b":{input:.07,output:.3},"amazon-bedrock/mistral.ministral-3-14b-instruct":{input:.2,output:.2},"amazon-bedrock/au.anthropic.claude-haiku-4-5-20251001-v1:0":{input:1.1,output:5.5,cache_read:.11,cache_write:1.375},"amazon-bedrock/openai.gpt-5.6-sol":{input:4.4,output:22,cache_read:.44,cache_write:5.5,tiers:[{input:8.8,output:33,cache_read:.88,cache_write:11,tier:{type:"context",size:272e3}}],context_over_200k:{input:8.8,output:33,cache_read:.88,cache_write:11}},"amazon-bedrock/minimax.minimax-m2.1":{input:.3,output:1.2},"amazon-bedrock/us.anthropic.claude-opus-4-5-20251101-v1:0":{input:5.5,output:27.5,cache_read:.55,cache_write:6.875},"amazon-bedrock/eu.anthropic.claude-opus-4-7":{input:5.5,output:27.5,cache_read:.55,cache_write:6.875},"amazon-bedrock/jp.amazon.nova-2-lite-v1:0":{input:.396,output:3.311,cache_read:.099,cache_write:.396},"amazon-bedrock/us.mistral.pixtral-large-2502-v1:0":{input:2,output:6},"amazon-bedrock/jp.anthropic.claude-opus-5":{input:5.5,output:27.5,cache_read:.55,cache_write:6.875},"amazon-bedrock/global.anthropic.claude-sonnet-4-20250514-v1:0":{input:3,output:15,cache_read:.3,cache_write:3.75},"amazon-bedrock/global.anthropic.claude-opus-4-8":{input:5,output:25,cache_read:.5,cache_write:6.25},"amazon-bedrock/openai.gpt-5.4":{input:2.75,output:16.5,cache_read:.275},"amazon-bedrock/mistral.voxtral-mini-3b-2507":{input:.04,output:.04},"amazon-bedrock/openai.gpt-oss-120b-1:0":{input:.15,output:.6},"amazon-bedrock/amazon.nova-2-lite-v1:0":{input:.33,output:2.75,cache_read:.0825,cache_write:.33},"amazon-bedrock/us.amazon.nova-micro-v1:0":{input:.035,output:.14,cache_read:.00875,cache_write:.035},"amazon-bedrock/mistral.ministral-3-8b-instruct":{input:.15,output:.15},"synthetic/hf:moonshotai/Kimi-K3":{input:3,output:15,cache_read:.45},"synthetic/hf:moonshotai/Kimi-K2.7-Code":{input:.95,output:4,cache_read:.95},"synthetic/hf:nvidia/NVIDIA-Nemotron-3-Super-120B-A12B-NVFP4":{input:.3,output:1,cache_read:.3},"synthetic/hf:zai-org/GLM-5.2":{input:1.4,output:4.4,cache_read:1.4},"synthetic/hf:zai-org/GLM-5.3-Flash":{input:.15,output:.5,cache_read:.04},"synthetic/hf:zai-org/GLM-4.7-Flash":{input:.1,output:.5,cache_read:.1},"synthetic/hf:deepseek-ai/DeepSeek-V4.1-Flash":{input:.6,output:1.2,cache_read:.03},"synthetic/hf:Qwen/Qwen3.6-27B":{input:.45,output:3.6,cache_read:.45},"synthetic/hf:openai/gpt-oss-120b":{input:.1,output:.1,cache_read:.1},"synthetic/hf:MiniMaxAI/MiniMax-M3":{input:.6,output:1.2,cache_read:.6},"llmgateway/grok-4-1-fast-reasoning":{input:.2,output:.5,cache_read:.05},"llmgateway/glm-4.6v":{input:.3,output:.9,cache_read:.05},"llmgateway/qwen-flash":{input:.05,output:.4,cache_read:.01,cache_write:.0625},"llmgateway/gpt-5.4":{input:2.5,output:15,cache_read:.25},"llmgateway/glm-4.5":{input:.6,output:2.2,cache_read:.11,cache_write:0},"llmgateway/claude-haiku-4-5":{input:1,output:5,cache_read:.1,cache_write:1.25},"llmgateway/gpt-5.4-pro":{input:30,output:180},"llmgateway/mimo-v2.6-pro":{input:.435,output:.87,cache_read:.0036},"llmgateway/gemma-4-31b-it":{input:.1,output:.25,cache_read:.01},"llmgateway/grok-4-5":{input:2,output:6,cache_read:.3},"llmgateway/gpt-3.5-turbo":{input:.5,output:1.5,cache_read:0},"llmgateway/grok-4-1-fast-non-reasoning":{input:.2,output:.5,cache_read:.05},"llmgateway/qwen3-vl-235b-a22b-instruct":{input:.2,output:.88,cache_read:.11},"llmgateway/seed-1-6-flash-250715":{input:.07,output:.3,cache_read:.015},"llmgateway/qwen3.7-max":{input:1.25,output:3.75,cache_read:.25,cache_write:3.125},"llmgateway/muse-spark-1.3":{input:1.25,output:4.25,cache_read:.15},"llmgateway/Qwen3.8-27B":{input:.08,output:.35,cache_read:.05},"llmgateway/gpt-4o-transcribe":{input:2.5,output:10},"llmgateway/mimo-v2.5":{input:.14,output:.28,cache_read:.0028,tiers:[{input:.8,output:4,cache_read:.16,tier:{type:"context",size:256e3}}],context_over_200k:{input:.8,output:4,cache_read:.16}},"llmgateway/gpt-5.5-pro":{input:30,output:180,tiers:[{input:60,output:270,tier:{type:"context",size:272e3}}],context_over_200k:{input:60,output:270}},"llmgateway/gpt-5.4-nano":{input:.2,output:1.25,cache_read:.02},"llmgateway/mistral-large-latest":{input:4,output:12},"llmgateway/nemotron-3.5-lightning":{input:.08,output:.2},"llmgateway/qwen3-vl-235b-a22b-thinking":{input:.98,output:3.95},"llmgateway/qwen3.8-2.4t-a95b":{input:2,output:6,cache_read:.25},"llmgateway/gpt-5.2-codex":{input:1.75,output:14,cache_read:.175},"llmgateway/gpt-5.1-codex":{input:1.25,output:10,cache_read:.125},"llmgateway/qwen-coder-plus":{input:.502,output:1.004},"llmgateway/glm-5v-turbo":{input:1.2,output:4,cache_read:.24},"llmgateway/gpt-4o":{input:2.5,output:10,cache_read:1.25},"llmgateway/qwen3-vl-plus":{input:.2,output:1.6,reasoning:4.8,cache_read:.04,cache_write:.25},"llmgateway/glm-5.3-flash":{input:.088,output:.25,cache_read:.025},"llmgateway/fugu-max":{input:2,output:6,cache_read:.25},"llmgateway/ministral-8b-2512":{input:.15,output:.15},"llmgateway/glm-4.6":{input:.55,output:2.2,cache_read:.11,cache_write:0},"llmgateway/glm-5.2-fast":{input:2.2,output:6.5,cache_read:.45},"llmgateway/muse-glimmer-30b":{input:.3,output:1.2,cache_read:.04},"llmgateway/grok-build-0-1":{input:1,output:2,cache_read:.2,tiers:[{input:2,output:4,cache_read:.4,tier:{type:"context",size:2e5}}],context_over_200k:{input:2,output:4,cache_read:.4}},"llmgateway/qwen3-235b-a22b-instruct-2507":{input:.09,output:.58},"llmgateway/qwen-max":{input:1.6,output:6.4},"llmgateway/qwen3-next-80b-a3b-thinking":{input:.15,output:1.2},"llmgateway/qwen3.8-max":{input:2,output:6,cache_read:.25,cache_write:2.5},"llmgateway/kimi-k3":{input:3,output:15,cache_read:.3},"llmgateway/qwen3-coder-next":{input:.108,output:.675,cache_read:.06},"llmgateway/glm-4.5-x":{input:2.2,output:8.9,cache_read:.45},"llmgateway/grok-4":{input:3,output:15,cache_read:.75},"llmgateway/gpt-5-mini":{input:.25,output:2,cache_read:.025},"llmgateway/llama-4-maverick-17b-instruct":{input:.27,output:.85},"llmgateway/gpt-5.2-pro":{input:21,output:168},"llmgateway/o4-mini":{input:1.1,output:4.4,cache_read:.275},"llmgateway/o3-mini":{input:1.1,output:4.4,cache_read:.55},"llmgateway/glm-5":{input:.72,output:2.3,cache_read:.144,cache_write:0},"llmgateway/fugu-ultra-v2.0":{input:5,output:30,cache_read:.5},"llmgateway/gpt-4":{input:30,output:60},"llmgateway/deepseek-v4.1-flash":{input:.15,output:.6,cache_read:.003},"llmgateway/gpt-5.3-codex":{input:1.75,output:14,cache_read:.175},"llmgateway/gpt-4.1-nano":{input:.1,output:.4,cache_read:.025},"llmgateway/minimax-m2.5":{input:.3,output:1.2,cache_read:.03,cache_write:.375},"llmgateway/kimi-k3-fast":{input:4.5,output:22.5,cache_read:.45},"llmgateway/qwen3-32b":{input:.36,output:.87,reasoning:8.4},"llmgateway/muse-spark-1.1":{input:1.25,output:4.25,cache_read:.15},"llmgateway/gpt-5-nano":{input:.05,output:.4,cache_read:.005},"llmgateway/qwen-plus":{input:.4,output:1.2,reasoning:4,cache_read:.08,cache_write:.5},"llmgateway/kimi-k2.7-code-highspeed":{input:1.9,output:8,cache_read:.38},"llmgateway/qwen3.7-flash":{input:.03,output:.13,cache_read:.006,cache_write:.0375},"llmgateway/kimi-k2.6":{input:.6,output:3.05,cache_read:.13},"llmgateway/minimax-m2.1-lightning":{input:.12,output:.48},"llmgateway/claude-sonnet-4-5":{input:3,output:15,cache_read:.3,cache_write:3.75},"llmgateway/qwen3-max":{input:.845,output:3.38,cache_read:.6,cache_write:3.75},"llmgateway/claude-opus-5-5":{input:4,output:20,cache_read:.2,cache_write:5},"llmgateway/glm-4.5-airx":{input:1.1,output:4.5,cache_read:.22},"llmgateway/glm-4.5v":{input:.6,output:1.8,cache_read:.11},"llmgateway/claude-fable-5-1":{input:10,output:50,cache_read:.25,cache_write:12.5},"llmgateway/devstral-2512":{input:.4,output:2},"llmgateway/llama-4-scout-17b-instruct":{input:.18,output:.59},"llmgateway/gemini-3.6-flash":{input:.75,output:3.75,cache_read:.075,cache_write:.08333},"llmgateway/qwen3-235b-a22b-fp8":{input:.2,output:.8},"llmgateway/o1":{input:15,output:60,cache_read:7.5},"llmgateway/glm-4-32b-0414-128k":{input:.1,output:.1},"llmgateway/qwen3-coder-480b-a35b-instruct":{input:.38,output:1.55},"llmgateway/qwen3-coder-30b-a3b-instruct":{input:.07,output:.27},"llmgateway/sonar-pro":{input:3,output:15},"llmgateway/ling-3.0-flash":{input:.06,output:.18,cache_read:.012},"llmgateway/kimi-k2-thinking":{input:.6,output:2.5,cache_read:.06},"llmgateway/claude-opus-4-1-20250805":{input:15,output:75,cache_read:1.5,cache_write:18.75},"llmgateway/gpt-5-pro":{input:15,output:120},"llmgateway/qwen3-vl-30b-a3b-instruct":{input:.15,output:.6},"llmgateway/seed-1-6-250915":{input:.25,output:2,cache_read:.05},"llmgateway/gemma-4-26b-a4b-it":{input:.07,output:.34},"llmgateway/claude-opus-4-5-20251101":{input:5,output:25,cache_read:.5,cache_write:6.25},"llmgateway/gemini-3.5-flash-lite":{input:.3,output:2.5,cache_read:.03,cache_write:.08333},"llmgateway/llama-3-70b-instruct":{input:.51,output:.74},"llmgateway/qwen3-vl-flash":{input:.05,output:.4,cache_read:.01},"llmgateway/qwen3-235b-a22b-thinking-2507":{input:.3,output:3},"llmgateway/gpt-6-astra":{input:10,output:50,cache_read:1,cache_write:12.5},"llmgateway/minimax-text-01":{input:.2,output:1.1},"llmgateway/gemini-3.1-pro-preview":{input:2,output:12,cache_read:.2,tiers:[{input:4,output:18,cache_read:.4,tier:{type:"context",size:2e5}}],context_over_200k:{input:4,output:18,cache_read:.4}},"llmgateway/glm-4.6v-flashx":{input:.04,output:.4,cache_read:.004},"llmgateway/grok-4-20-beta-0309-non-reasoning":{input:2,output:6,cache_read:.2,tiers:[{input:2.5,output:5,cache_read:.4,tier:{type:"context",size:2e5}}],context_over_200k:{input:2.5,output:5,cache_read:.4}},"llmgateway/kimi-k2.5":{input:.405,output:1.98,cache_read:.225},"llmgateway/gpt-5.1":{input:1.25,output:10,cache_read:.125},"llmgateway/claude-opus-5":{input:5,output:25,cache_read:.5,cache_write:6.25},"llmgateway/llama-3.3-70b-instruct":{input:.135,output:.4},"llmgateway/gpt-4o-mini":{input:.15,output:.6,cache_read:.075},"llmgateway/qwen3.6-35b-a3b":{input:.248,output:1.485},"llmgateway/qwen3-next-80b-a3b-instruct":{input:.15,output:1.2},"llmgateway/fugu-ultra":{input:5,output:30,cache_read:.5},"llmgateway/gpt-oss-20b":{input:.04,output:.19,cache_read:.01},"llmgateway/minimax-m2.7":{input:.08,output:.32,cache_read:.017,cache_write:.375},"llmgateway/gemini-3.5-flash":{input:1.5,output:9,cache_read:.15,cache_write:.08333},"llmgateway/gemini-2.5-pro":{input:1.25,output:10,cache_read:.125,tiers:[{input:2.5,output:15,cache_read:.25,tier:{type:"context",size:2e5}}],context_over_200k:{input:2.5,output:15,cache_read:.25}},"llmgateway/qwen3.6-flash":{input:.25,output:1.5,cache_read:.05,cache_write:.3125},"llmgateway/gemini-2.5-flash":{input:.3,output:2.5,cache_read:.03},"llmgateway/qwen3-coder-flash":{input:.3,output:1.5,cache_read:.06,cache_write:.375},"llmgateway/nemotron-3-ultra-550b":{input:.5,output:2.2,cache_read:.1},"llmgateway/llama-3.2-11b-instruct":{input:.07,output:.33},"llmgateway/inkling-small":{input:.45,output:1.2,cache_read:.1},"llmgateway/claude-fable-5":{input:10,output:50,cache_read:1,cache_write:12.5},"llmgateway/mimo-v2.5-pro":{input:.435,output:.87,cache_read:.0036,tiers:[{input:2,output:6,cache_read:.4,tier:{type:"context",size:256e3}}],context_over_200k:{input:2,output:6,cache_read:.4}},"llmgateway/qwen3-coder-plus":{input:1,output:5,cache_read:.2,cache_write:1.25},"llmgateway/glm-4.7-flash":{input:.06,output:.4,cache_read:.01,cache_write:0},"llmgateway/qwen3.5-9b":{input:.1,output:.15},"llmgateway/inkling":{input:.95,output:4.05,cache_read:.16},"llmgateway/muse-spark-1.2":{input:1.25,output:4.25,cache_read:.15},"llmgateway/mimo-v2.6-flash":{input:.14,output:.28,cache_read:.0028},"llmgateway/gpt-5.4-mini":{input:.75,output:4.5,cache_read:.075},"llmgateway/seed-1-8-251228":{input:.25,output:2,cache_read:.05},"llmgateway/glm-4.7":{input:.38,output:1.98,cache_read:.19,cache_write:0},"llmgateway/minimax-m3":{input:.3,output:1.2,cache_read:.06},"llmgateway/gpt-5.6-luna":{input:.2,output:1.2,cache_read:.02,cache_write:.25},"llmgateway/qwen3.8-flash":{input:.15,output:.47,cache_read:.016,cache_write:.2},"llmgateway/gpt-5.2":{input:1.75,output:14,cache_read:.175},"llmgateway/claude-opus-4-8":{input:5,output:25,cache_read:.5,cache_write:6.25},"llmgateway/seed-1-6-250615":{input:.25,output:2,cache_read:.05},"llmgateway/gpt-5.5":{input:5,output:30,cache_read:.5,tiers:[{input:10,output:45,cache_read:1,tier:{type:"context",size:272e3}}],context_over_200k:{input:10,output:45,cache_read:1}},"llmgateway/claude-sonnet-4-5-20250929":{input:3,output:15,cache_read:.3,cache_write:3.75},"llmgateway/qwen35-397b-a17b":{input:.6,output:3.6},"llmgateway/gpt-4.1":{input:2,output:8,cache_read:.5},"llmgateway/claude-sonnet-5":{input:2,output:10,cache_read:.2,cache_write:2.5},"llmgateway/qwen3.6-max-preview":{input:1.3,output:7.8,cache_read:.13,cache_write:1.625},"llmgateway/claude-opus-4-6":{input:5,output:25,cache_read:.5,cache_write:6.25},"llmgateway/gemini-3.7-flash":{input:.75,output:3.75,cache_read:.075,cache_write:.08333},"llmgateway/glm-5.2":{input:.8,output:2.55,cache_read:.16,cache_write:0},"llmgateway/ernie-4.5-vl-424b-a47b":{input:.42,output:1.25},"llmgateway/hy3":{input:.132,output:.528,cache_read:.033},"llmgateway/kimi-k2":{input:.57,output:2.3,cache_read:.5},"llmgateway/qwen-omni-turbo":{input:.2,output:.8},"llmgateway/hy-mt2-plus":{input:.074,output:.295},"llmgateway/grok-4-3":{input:1.25,output:2.5,cache_read:.2,tiers:[{input:2.5,output:5,cache_read:.4,tier:{type:"context",size:2e5}}],context_over_200k:{input:2.5,output:5,cache_read:.4}},"llmgateway/glm-5.1":{input:.931,output:2.93,cache_read:.173,cache_write:0},"llmgateway/grok-4-20-non-reasoning":{input:1.25,output:2.5,cache_read:.2,tiers:[{input:2.5,output:5,cache_read:.4,tier:{type:"context",size:2e5}}],context_over_200k:{input:2.5,output:5,cache_read:.4}},"llmgateway/gemini-3-flash-preview":{input:.5,output:3,cache_read:.05},"llmgateway/grok-4-20-beta-0309-reasoning":{input:2,output:6,cache_read:.2,tiers:[{input:2.5,output:5,cache_read:.4,tier:{type:"context",size:2e5}}],context_over_200k:{input:2.5,output:5,cache_read:.4}},"llmgateway/minimax-m2.7-highspeed":{input:.6,output:2.4,cache_read:.06,cache_write:.375},"llmgateway/claude-haiku-4-5-20251001":{input:1,output:5,cache_read:.1,cache_write:1.25},"llmgateway/glm-4.7-flashx":{input:.07,output:.4,cache_read:.01,cache_write:0},"llmgateway/muse-spark-1.2-contributor":{input:.1,output:.2,cache_read:.002},"llmgateway/sonar":{input:1,output:1},"llmgateway/mistral-large-2512":{input:.5,output:1.5},"llmgateway/grok-4-6":{input:2,output:6,cache_read:.5},"llmgateway/gemini-pro-latest":{input:2,output:12,cache_read:.2},"llmgateway/gpt-4.1-mini":{input:.4,output:1.6,cache_read:.1},"llmgateway/minimax-m2.5-highspeed":{input:.6,output:2.4,cache_read:.03,cache_write:.375},"llmgateway/gemini-3.8-flash":{input:.75,output:3.75,cache_read:.075,cache_write:.08333},"llmgateway/ministral-14b-2512":{input:.2,output:.2},"llmgateway/glm-5-turbo":{input:1.2,output:4,cache_read:.24},"llmgateway/gpt-6-luna":{input:.1,output:.5,cache_read:.01,cache_write:.125},"llmgateway/deepseek-v4-pro":{input:.435,output:.87,cache_read:.003625},"llmgateway/step-3.7-flash":{input:.2,output:1.15,cache_read:.04},"llmgateway/gemini-2.5-flash-lite":{input:.1,output:.4,cache_read:.01},"llmgateway/claude-sonnet-4-6":{input:3,output:15,cache_read:.3,cache_write:3.75},"llmgateway/gpt-4o-mini-transcribe":{input:1.25,output:5},"llmgateway/sonar-reasoning-pro":{input:2,output:8},"llmgateway/llama-3.2-3b-instruct":{input:.03,output:.05},"llmgateway/qwen3.6-plus":{input:.5,output:3,cache_read:.05,cache_write:.625,tiers:[{input:2,output:6,cache_read:.2,cache_write:2.5,tier:{type:"context",size:256e3}}],context_over_200k:{input:2,output:6,cache_read:.2,cache_write:2.5}},"llmgateway/mistral-small-2506":{input:.1,output:.3},"llmgateway/grok-4-20-reasoning":{input:1.25,output:2.5,cache_read:.2,tiers:[{input:2.5,output:5,cache_read:.4,tier:{type:"context",size:2e5}}],context_over_200k:{input:2.5,output:5,cache_read:.4}},"llmgateway/grok-4-7":{input:2,output:6,cache_read:.5},"llmgateway/gpt-5.6-terra":{input:2,output:12,cache_read:.2,cache_write:2.5},"llmgateway/deepseek-v3.2":{input:.26,output:.38,cache_read:.13},"llmgateway/gpt-4-turbo":{input:10,output:30},"llmgateway/hy4-preview":{input:.834,output:2.501,cache_read:.042},"llmgateway/muse-spark-1.3-contributor":{input:.1,output:.2,cache_read:.002},"llmgateway/glm-4.5-air":{input:.13,output:.85,cache_read:.025,cache_write:0},"llmgateway/qwen-plus-latest":{input:.4,output:1.2,cache_read:.08,cache_write:.5},"llmgateway/gpt-oss-120b":{input:.032,output:.14,cache_read:.032},"llmgateway/gpt-5.1-codex-mini":{input:.25,output:2,cache_read:.025},"llmgateway/ministral-3b-2512":{input:.1,output:.1},"llmgateway/o3":{input:2,output:8,cache_read:.5},"llmgateway/glm-5.3":{input:1.2,output:4,cache_read:.2},"llmgateway/claude-opus-4-7":{input:5,output:25,cache_read:.5,cache_write:6.25},"llmgateway/kimi-k2.7-code":{input:.95,output:4,cache_read:.19},"llmgateway/gpt-5":{input:1.25,output:10,cache_read:.125},"llmgateway/qwen3.7-plus":{input:.4,output:1.6,cache_read:.08,cache_write:.5},"llmgateway/minimax-m2.1":{input:.27,output:1.1},"llmgateway/gpt-5.6-sol":{input:4,output:20,cache_read:.4,cache_write:5},"llmgateway/llama-3.1-70b-instruct":{input:.72,output:.72},"llmgateway/minimax-m2":{input:.2,output:1,cache_read:.03},"llmgateway/codestral-2508":{input:.3,output:.9},"llmgateway/deepseek-v4-flash":{input:.05,output:.1,cache_read:.01},"llmgateway/gpt-6-sol":{input:2,output:10,cache_read:.2,cache_write:2.5},"llmgateway/gemini-3.1-flash-lite":{input:.25,output:1.5,cache_read:.025,cache_write:.08333},"sap-ai-core/anthropic--claude-4-opus":{input:15,output:75,cache_read:1.5,cache_write:18.75},"sap-ai-core/gpt-5.4":{input:2.5,output:15,cache_read:.25},"sap-ai-core/nvidia--llama-3.2-nv-embedqa-1b":{input:.07,output:0},"sap-ai-core/text-embedding-3-small":{input:.02,output:0},"sap-ai-core/sap-abap-1":{input:.48,output:1.7},"sap-ai-core/anthropic--claude-4.8-opus":{input:5,output:25,cache_read:.5,cache_write:6.25},"sap-ai-core/gpt-5-mini":{input:.25,output:2,cache_read:.025},"sap-ai-core/anthropic--claude-3-haiku":{input:.25,output:1.25,cache_read:.03,cache_write:.3},"sap-ai-core/gpt-4.1-nano":{input:.08,output:.26},"sap-ai-core/gpt-5-nano":{input:.05,output:.4,cache_read:.005},"sap-ai-core/anthropic--claude-4.5-haiku":{input:1,output:5,cache_read:.1,cache_write:1.25},"sap-ai-core/anthropic--claude-4.7-opus":{input:5,output:25,cache_read:.5,cache_write:6.25},"sap-ai-core/amazon--nova-pro":{input:.56,output:2.13},"sap-ai-core/amazon--nova-lite":{input:.3,output:2.37},"sap-ai-core/sonar-pro":{input:3,output:15},"sap-ai-core/anthropic--claude-3.5-sonnet":{input:3,output:15,cache_read:.3,cache_write:3.75},"sap-ai-core/text-embedding-3-large":{input:.09,output:0},"sap-ai-core/amazon--nova-micro":{input:.03,output:.1},"sap-ai-core/anthropic--claude-4.5-opus":{input:5,output:25,cache_read:.5,cache_write:6.25},"sap-ai-core/anthropic--claude-4-sonnet":{input:3,output:15,cache_read:.3,cache_write:3.75},"sap-ai-core/gemini-3.5-flash":{input:1.5,output:9,cache_read:.15,input_audio:1.5},"sap-ai-core/gemini-2.5-pro":{input:1.25,output:10,cache_read:.125},"sap-ai-core/anthropic--claude-3-sonnet":{input:3,output:15,cache_read:.3,cache_write:3.75},"sap-ai-core/sonar-deep-research":{input:2,output:8,reasoning:3},"sap-ai-core/mistralai--mistral-small":{input:.07,output:.28},"sap-ai-core/gemini-2.5-flash":{input:.3,output:2.5,cache_read:.03,input_audio:1},"sap-ai-core/anthropic--claude-3.7-sonnet":{input:3,output:15,cache_read:.3,cache_write:3.75},"sap-ai-core/gpt-5.6-luna":{input:1,output:6,cache_read:.1,tiers:[{input:2,output:9,cache_read:.2,tier:{type:"context",size:272e3}}],context_over_200k:{input:2,output:9,cache_read:.2}},"sap-ai-core/gpt-5.2":{input:1.25,output:9.44,cache_read:.12},"sap-ai-core/gpt-5.5":{input:5,output:30,cache_read:.5},"sap-ai-core/anthropic--claude-4.6-opus":{input:5,output:25,cache_read:.5,cache_write:6.25},"sap-ai-core/mistralai--mistral-medium-instruct":{input:.36,output:1.22},"sap-ai-core/gpt-4.1":{input:2,output:8,cache_read:.32},"sap-ai-core/anthropic--claude-3-opus":{input:15,output:75,cache_read:1.5,cache_write:18.75},"sap-ai-core/anthropic--claude-4.6-sonnet":{input:3,output:15,cache_read:.3,cache_write:3.75},"sap-ai-core/sonar":{input:1,output:1},"sap-ai-core/amazon--titan-embed-text":{input:.14,output:0},"sap-ai-core/gpt-4.1-mini":{input:.4,output:1.6,cache_read:.1},"sap-ai-core/gemini-2.5-flash-lite":{input:.1,output:.4,cache_read:.01,input_audio:.3},"sap-ai-core/gpt-5.6-terra":{input:2.5,output:15,cache_read:.25,tiers:[{input:5,output:22.5,cache_read:.5,tier:{type:"context",size:272e3}}],context_over_200k:{input:5,output:22.5,cache_read:.5}},"sap-ai-core/gpt-5":{input:1.25,output:10,cache_read:.125},"sap-ai-core/anthropic--claude-4.5-sonnet":{input:3,output:15,cache_read:.3,cache_write:3.75},"sap-ai-core/gpt-5.6-sol":{input:5,output:30,cache_read:.5,tiers:[{input:10,output:45,cache_read:1,tier:{type:"context",size:272e3}}],context_over_200k:{input:10,output:45,cache_read:1}},"sap-ai-core/cohere--command-a-reasoning":{input:.63,output:5.05},"sap-ai-core/gemini-3.1-flash-lite":{input:.25,output:1.5,cache_read:.025,input_audio:.5},"vivgrid/viv-fast":{input:.13,output:.4,cache_read:.05},"vivgrid/gpt-5.4":{input:2.5,output:15,cache_read:.25},"vivgrid/gpt-5.4-nano":{input:.2,output:1.25,cache_read:.02},"vivgrid/gpt-5.2-codex":{input:1.75,output:14,cache_read:.175},"vivgrid/gpt-5.1-codex":{input:1.25,output:10,cache_read:.125},"vivgrid/glm-5.3-flash":{input:.15,output:.5,cache_read:.04},"vivgrid/kimi-k3":{input:3,output:15,cache_read:.3},"vivgrid/gpt-5-mini":{input:.25,output:2,cache_read:.03},"vivgrid/deepseek-v4.1-flash":{input:.31,output:1.23,cache_read:.01},"vivgrid/gpt-5.3-codex":{input:1.75,output:14,cache_read:.175},"vivgrid/claude-opus-5-5":{input:4,output:20,cache_read:.2,cache_write:5},"vivgrid/claude-fable-5-1":{input:10,output:50,cache_read:.5,cache_write:12.5},"vivgrid/gpt-6-astra":{input:10,output:50,cache_read:1,cache_write:12.5,tiers:[{input:20,output:75,cache_read:2,cache_write:25,tier:{type:"context",size:272e3}}],context_over_200k:{input:20,output:75,cache_read:2,cache_write:25}},"vivgrid/gemini-3.1-pro-preview":{input:2,output:12,cache_read:.2,tiers:[{input:4,output:18,cache_read:.4,tier:{type:"context",size:2e5}}],context_over_200k:{input:4,output:18,cache_read:.4}},"vivgrid/claude-opus-5":{input:5,output:25,cache_read:.5,cache_write:6.25},"vivgrid/claude-fable-5":{input:10,output:50,cache_read:1.25,cache_write:12.5},"vivgrid/deepseek-v4-pro-0813":{input:1.35,output:3,reasoning:3,cache_read:.05},"vivgrid/gpt-5.4-mini":{input:.75,output:4.5,cache_read:.075},"vivgrid/gpt-5.6-luna":{input:1,output:6,cache_read:.1,cache_write:1.25},"vivgrid/gpt-5.1-codex-max":{input:1.25,output:10,cache_read:.125},"vivgrid/gpt-5.5":{input:5,output:30,cache_read:.5,tiers:[{input:10,output:45,cache_read:1,tier:{type:"context",size:272e3}}],context_over_200k:{input:10,output:45,cache_read:1}},"vivgrid/claude-sonnet-5":{input:2,output:10,cache_read:.2,cache_write:2.5},"vivgrid/gemini-3.7-flash":{input:.75,output:3.75,cache_read:.075},"vivgrid/glm-5.2":{input:1.2,output:4.2,cache_read:.3},"vivgrid/gemini-3.8-flash":{input:.75,output:3.75,cache_read:.15},"vivgrid/gpt-6-luna":{input:.1,output:.5,cache_read:.01,cache_write:.125,tiers:[{input:.2,output:.75,cache_read:.02,cache_write:.25,tier:{type:"context",size:272e3}}],context_over_200k:{input:.2,output:.75,cache_read:.02,cache_write:.25}},"vivgrid/deepseek-v4-pro":{input:.435,output:.87,cache_read:.003625},"vivgrid/gpt-5.6-terra":{input:2.5,output:15,cache_read:.25,cache_write:3.125},"vivgrid/deepseek-v3.2":{input:.28,output:.42},"vivgrid/glm-5.3":{input:1.2,output:4.2,cache_read:.26},"vivgrid/gemini-3.1-flash-lite-preview":{input:.25,output:1.5,cache_read:.025,cache_write:1},"vivgrid/gpt-5.6-sol":{input:5,output:30,cache_read:.5,cache_write:6.25},"vivgrid/deepseek-v4-flash":{input:.15,output:.3,reasoning:.3,cache_read:.03},"vivgrid/gpt-6-sol":{input:2,output:10,cache_read:.2,cache_write:2.5,tiers:[{input:4,output:15,cache_read:.4,cache_write:5,tier:{type:"context",size:272e3}}],context_over_200k:{input:4,output:15,cache_read:.4,cache_write:5}},"klokintegration/Kloker-Integration-Developer":{input:.23,output:1.16},"klokintegration/Kloker":{input:.23,output:1.16},"klokintegration/Kloker-Integration-Architect":{input:.23,output:1.16},"google-vertex/claude-opus-4-8@default":{input:5,output:25,cache_read:.5,cache_write:6.25,tiers:[{input:10,output:37.5,cache_read:1,cache_write:12.5,tier:{type:"context",size:2e5}}],context_over_200k:{input:10,output:37.5,cache_read:1,cache_write:12.5}},"google-vertex/gemini-2.5-flash-tts":{input:.5,output:10},"google-vertex/gemini-flash-latest":{input:1.5,output:9,cache_read:.15,input_audio:1.5},"google-vertex/claude-sonnet-4-5@20250929":{input:3,output:15,cache_read:.3,cache_write:3.75},"google-vertex/gemini-2.5-flash-image":{input:.3,output:30},"google-vertex/claude-opus-4-6@default":{input:5,output:25,cache_read:.5,cache_write:6.25,tiers:[{input:10,output:37.5,cache_read:1,cache_write:12.5,tier:{type:"context",size:2e5}}],context_over_200k:{input:10,output:37.5,cache_read:1,cache_write:12.5}},"google-vertex/claude-opus-4@20250514":{input:15,output:75,cache_read:1.5,cache_write:18.75},"google-vertex/gemini-flash-lite-latest":{input:.25,output:1.5,cache_read:.025,input_audio:.5},"google-vertex/claude-opus-5-5@default":{input:4,output:20,cache_read:.2,cache_write:5},"google-vertex/gemini-3.6-flash":{input:.75,output:3.75,cache_read:.075,input_audio:.75},"google-vertex/claude-opus-5@default":{input:5,output:25,cache_read:.5,cache_write:6.25},"google-vertex/claude-sonnet-4-6@default":{input:3,output:15,cache_read:.3,cache_write:3.75,tiers:[{input:6,output:22.5,cache_read:.6,cache_write:7.5,tier:{type:"context",size:2e5}}],context_over_200k:{input:6,output:22.5,cache_read:.6,cache_write:7.5}},"google-vertex/claude-haiku-4-5@20251001":{input:1,output:5,cache_read:.1,cache_write:1.25},"google-vertex/gemini-3.5-flash-lite":{input:.3,output:2.5,cache_read:.03},"google-vertex/gemini-3.1-flash-image":{input:.5,output:60,cache_read:.05},"google-vertex/gemini-3.1-pro-preview":{input:2,output:12,cache_read:.2,tiers:[{input:4,output:18,cache_read:.4,tier:{type:"context",size:2e5}}],context_over_200k:{input:4,output:18,cache_read:.4}},"google-vertex/claude-opus-4-1@20250805":{input:15,output:75,cache_read:1.5,cache_write:18.75},"google-vertex/claude-opus-4-5@20251101":{input:5,output:25,cache_read:.5,cache_write:6.25},"google-vertex/claude-opus-4-7@default":{input:5,output:25,cache_read:.5,cache_write:6.25,tiers:[{input:10,output:37.5,cache_read:1,cache_write:12.5,tier:{type:"context",size:2e5}}],context_over_200k:{input:10,output:37.5,cache_read:1,cache_write:12.5}},"google-vertex/gemini-3.5-flash":{input:1.5,output:9,cache_read:.15,input_audio:1.5},"google-vertex/gemini-2.5-pro":{input:1.25,output:10,cache_read:.125,tiers:[{input:2.5,output:15,cache_read:.25,tier:{type:"context",size:2e5}}],context_over_200k:{input:2.5,output:15,cache_read:.25}},"google-vertex/gemini-3-pro-image":{input:2,output:120,cache_read:.2},"google-vertex/gemini-2.5-flash":{input:.3,output:2.5,cache_read:.03,input_audio:1},"google-vertex/claude-fable-5-1@default":{input:10,output:50,cache_read:.25,cache_write:12.5},"google-vertex/gemini-3.7-flash":{input:.75,output:3.75,cache_read:.075,input_audio:.75},"google-vertex/gemini-3.1-pro-preview-customtools":{input:2,output:12,cache_read:.2,tiers:[{input:4,output:18,cache_read:.4,tier:{type:"context",size:2e5}}],context_over_200k:{input:4,output:18,cache_read:.4}},"google-vertex/gemini-3-flash-preview":{input:.5,output:3,cache_read:.05,input_audio:1},"google-vertex/claude-fable-5@default":{input:10,output:50,cache_read:1,cache_write:12.5},"google-vertex/gemini-3.8-flash":{input:.75,output:3.75,cache_read:.075,input_audio:.75},"google-vertex/gemini-2.5-flash-lite":{input:.1,output:.4,cache_read:.01,input_audio:.3},"google-vertex/gemini-2.5-pro-tts":{input:1,output:20},"google-vertex/gemini-embedding-001":{input:.15,output:0},"google-vertex/claude-sonnet-4@20250514":{input:3,output:15,cache_read:.3,cache_write:3.75},"google-vertex/gemini-3.1-flash-lite-preview":{input:.25,output:1.5,cache_read:.025,input_audio:.5},"google-vertex/claude-sonnet-5@default":{input:2,output:10,cache_read:.2,cache_write:2.5},"google-vertex/gemini-3.1-flash-lite":{input:.25,output:1.5,cache_read:.025,input_audio:.5},"google-vertex/meta/llama-4-maverick-17b-128e-instruct-maas":{input:.35,output:1.15},"google-vertex/meta/llama-3.3-70b-instruct-maas":{input:.72,output:.72},"google-vertex/xai/grok-4.20-reasoning":{input:1.25,output:2.5,cache_read:.2,tiers:[{input:2.5,output:5,cache_read:.4,tier:{type:"context",size:2e5}}],context_over_200k:{input:2.5,output:5,cache_read:.4}},"google-vertex/xai/grok-4.20-non-reasoning":{input:1.25,output:2.5,cache_read:.2,tiers:[{input:2.5,output:5,cache_read:.4,tier:{type:"context",size:2e5}}],context_over_200k:{input:2.5,output:5,cache_read:.4}},"google-vertex/xai/grok-4.1-fast-reasoning":{input:.2,output:.5,cache_read:.05},"google-vertex/xai/grok-4.3":{input:1.25,output:2.5,cache_read:.2,tiers:[{input:2.5,output:5,cache_read:.4,tier:{type:"context",size:2e5}}],context_over_200k:{input:2.5,output:5,cache_read:.4}},"google-vertex/xai/grok-4.1-fast-non-reasoning":{input:.2,output:.5,cache_read:.05},"google-vertex/xai/grok-4.6":{input:2,output:6,cache_read:.5,tiers:[{input:4,output:12,cache_read:1,tier:{type:"context",size:2e5}}],context_over_200k:{input:4,output:12,cache_read:1}},"google-vertex/deepseek-ai/deepseek-v3.1-maas":{input:.6,output:1.7,cache_read:.06},"google-vertex/deepseek-ai/deepseek-v3.2-maas":{input:.56,output:1.68,cache_read:.056},"google-vertex/moonshotai/kimi-k2-thinking-maas":{input:.6,output:2.5,cache_read:.06},"google-vertex/zai-org/glm-5-maas":{input:1,output:3.2,cache_read:.1},"google-vertex/zai-org/glm-4.7-maas":{input:.6,output:2.2,cache_read:.06},"google-vertex/zai-org/glm-5.2-maas":{input:1.4,output:4.4,cache_read:.14},"google-vertex/qwen/qwen3-235b-a22b-instruct-2507-maas":{input:.22,output:.88},"google-vertex/openai/gpt-oss-20b-maas":{input:.07,output:.25,cache_read:.007},"google-vertex/openai/gpt-oss-120b-maas":{input:.09,output:.36},"evroc/google/gemma-4-26B-A4B-it":{input:.144,output:.575},"evroc/intfloat/multilingual-e5-large-instruct":{input:.114,output:.114},"evroc/Qwen/Qwen3.8-27B":{input:.87,output:3.5},"evroc/Qwen/Qwen3-Reranker-4B":{input:.0575,output:0},"evroc/Qwen/Qwen3.6-35B-A3B":{input:.345,output:1.38},"evroc/Qwen/Qwen3-Embedding-8B":{input:.115,output:.115},"evroc/mistralai/Mistral-Medium-3.5-128B":{input:1.725,output:6.9},"evroc/mistralai/Voxtral-Small-24B-2507":{input:.0023,output:.0023,output_audio:2.3},"evroc/moonshotai/Kimi-K2.6":{input:1.4375,output:5.75},"evroc/zai-org/GLM-5.2":{input:1.4375,output:5.75},"evroc/nvidia/Llama-3.3-70B-Instruct-FP8":{input:1.15,output:1.15},"evroc/KBLab/kb-whisper-large":{input:.0023,output:.0023,output_audio:2.3},"evroc/evroc/roc":{input:2.875,output:11.516},"evroc/openai/whisper-large-v3":{input:.0023,output:.0023,output_audio:2.3},"evroc/openai/whisper-large-v3-turbo":{input:.0023,output:.0023,output_audio:2.3},"evroc/openai/gpt-oss-120b":{input:.23,output:.92},"tokengo/deepseek/deepseek-v3.1":{input:.19,output:.71,cache_read:.06},"tokengo/deepseek/deepseek-v4-pro":{input:.435,output:.87},"tokengo/deepseek/deepseek-v3.2":{input:.2174,output:.326,cache_read:.06},"tokengo/deepseek/deepseek-v4-flash":{input:.098,output:.196,cache_read:.028},"tokengo/z-ai/glm-5.3-flash":{input:.075,output:.025,cache_read:.015},"tokengo/z-ai/glm-5":{input:.89,output:3.2647,cache_read:.2226},"tokengo/z-ai/glm-5.2":{input:1.4,output:4.4,cache_read:.26},"tokengo/z-ai/glm-5.1":{input:1.4,output:4.4,cache_read:.26},"tokengo/z-ai/glm-5.3":{input:1.4,output:4.4,cache_read:.26},"tokengo/moonshotai/kimi-k3":{input:3,output:15,cache_read:.3},"tokengo/moonshotai/kimi-k2.6":{input:.95,output:4,cache_read:.16},"tokengo/minimax/minimax-m2.5":{input:.3,output:1.2,cache_read:.03},"tokengo/qwen/qwen3.5-397b-a17b":{input:.4,output:2.65,cache_read:.2},"submodel/Qwen/Qwen3-235B-A22B-Thinking-2507":{input:.2,output:.6},"submodel/Qwen/Qwen3-235B-A22B-Instruct-2507":{input:.2,output:.3},"submodel/Qwen/Qwen3-Coder-480B-A35B-Instruct-FP8":{input:.2,output:.8},"submodel/deepseek-ai/DeepSeek-V3.1":{input:.2,output:.8},"submodel/deepseek-ai/DeepSeek-R1-0528":{input:.5,output:2.15},"submodel/deepseek-ai/DeepSeek-V3-0324":{input:.2,output:.8},"submodel/zai-org/GLM-4.5-FP8":{input:.2,output:.8},"submodel/zai-org/GLM-4.5-Air":{input:.1,output:.5},"submodel/openai/gpt-oss-120b":{input:.1,output:.5},"kosmik/qwen/qwen3.8-27b":{input:.35,output:2.2,cache_read:.09},"tencent-token-plan/hy4-preview":{input:.834,output:2.501,cache_read:.042},"togetherai/meta-llama/Llama-3.3-70B-Instruct-Turbo":{input:1.04,output:1.04},"togetherai/meta-llama/Meta-Llama-3-8B-Instruct-Lite":{input:.14,output:.14},"togetherai/pearl-ai/gemma-4-31b-it":{input:.28,output:.86},"togetherai/deepcogito/cogito-v2-1-671b":{input:1.25,output:1.25},"togetherai/thinkingmachines/Inkling":{input:1,output:4.05,cache_read:.17},"togetherai/essentialai/Rnj-1-Instruct":{input:.15,output:.15},"togetherai/google/gemma-3n-E4B-it":{input:.06,output:.12},"togetherai/google/gemma-4-31B-it":{input:.39,output:.97},"togetherai/Qwen/Qwen3.7-Max":{input:1.25,output:3.75,cache_read:.125},"togetherai/Qwen/Qwen2.5-7B-Instruct-Turbo":{input:.3,output:.3},"togetherai/Qwen/Qwen3-Coder-Next-FP8":{input:.5,output:1.2},"togetherai/Qwen/Qwen3-235B-A22B-Instruct-2507-tput":{input:.2,output:.6},"togetherai/Qwen/Qwen3.5-9B":{input:.17,output:.25},"togetherai/Qwen/Qwen3.5-397B-A17B":{input:.6,output:3.6,cache_read:.35},"togetherai/Qwen/Qwen3-Coder-480B-A35B-Instruct-FP8":{input:2,output:2},"togetherai/Qwen/Qwen3.6-Plus":{input:.5,output:3},"togetherai/LiquidAI/LFM2-24B-A2B":{input:.03,output:.12},"togetherai/deepseek-ai/DeepSeek-V4-Flash-0731":{input:.14,output:.28,cache_read:.03},"togetherai/deepseek-ai/DeepSeek-R1":{input:3,output:7},"togetherai/deepseek-ai/DeepSeek-V4-Pro-0813":{input:1.32,output:3.96,cache_read:.13},"togetherai/deepseek-ai/DeepSeek-V4.1-Flash":{input:.3,output:1.2,cache_read:.006},"togetherai/deepseek-ai/DeepSeek-V3-1":{input:.6,output:1.7},"togetherai/deepseek-ai/DeepSeek-V4-Pro":{input:1.74,output:3.48,cache_read:.2},"togetherai/deepseek-ai/DeepSeek-V3":{input:1.25,output:1.25},"togetherai/MiniMaxAI/MiniMax-M3":{input:.3,output:1.2,cache_read:.06},"togetherai/MiniMaxAI/MiniMax-M2.5":{input:.3,output:1.2,cache_read:.06},"togetherai/MiniMaxAI/MiniMax-M2.7":{input:.3,output:1.2,cache_read:.06},"togetherai/moonshotai/Kimi-K2.6":{input:1.2,output:4.5,cache_read:.2},"togetherai/moonshotai/Kimi-K3":{input:3,output:15,cache_read:.3},"togetherai/moonshotai/Kimi-K2.7-Code":{input:.95,output:4,cache_read:.19},"togetherai/moonshotai/Kimi-K2.5":{input:.5,output:2.8},"togetherai/zai-org/GLM-5.1":{input:1.4,output:4.4,cache_read:.26},"togetherai/zai-org/GLM-5.2":{input:1.4,output:4.4,cache_read:.26},"togetherai/zai-org/GLM-5":{input:1,output:3.2},"togetherai/zai-org/GLM-5.3-Flash":{input:.15,output:.5,cache_read:.03},"togetherai/zai-org/GLM-5.3":{input:1.4,output:4.4,cache_read:.26},"togetherai/nvidia/nemotron-3-ultra-550b-a55b":{input:.6,output:3.6,cache_read:.2},"togetherai/openai/gpt-oss-20b":{input:.05,output:.2},"togetherai/openai/gpt-oss-120b":{input:.15,output:.6},"helicone/grok-4-1-fast-reasoning":{input:.19999999999999998,output:.5,cache_read:.049999999999999996},"helicone/grok-3":{input:3,output:15,cache_read:.75},"helicone/llama-4-scout":{input:.08,output:.3},"helicone/llama-guard-4":{input:.21,output:.21},"helicone/mistral-large-2411":{input:2,output:6},"helicone/grok-4-1-fast-non-reasoning":{input:.19999999999999998,output:.5,cache_read:.049999999999999996},"helicone/qwen3-vl-235b-a22b-instruct":{input:.3,output:1.5},"helicone/mistral-nemo":{input:20,output:40},"helicone/gpt-5.1-codex":{input:1.25,output:10,cache_read:.12500000000000003},"helicone/gemini-3-pro-preview":{input:2,output:12,cache_read:.19999999999999998},"helicone/gpt-4o":{input:2.5,output:10,cache_read:1.25},"helicone/gpt-4.1-mini-2025-04-14":{input:.39999999999999997,output:1.5999999999999999,cache_read:.09999999999999999},"helicone/glm-4.6":{input:.44999999999999996,output:1.5},"helicone/claude-3.5-haiku":{input:.7999999999999999,output:4,cache_read:.08,cache_write:1},"helicone/o1-mini":{input:1.1,output:4.4,cache_read:.55},"helicone/grok-4":{input:3,output:15,cache_read:.75},"helicone/gpt-5-codex":{input:1.25,output:10,cache_read:.12500000000000003},"helicone/llama-4-maverick":{input:.15,output:.6},"helicone/qwen3-coder":{input:.22,output:.95},"helicone/gpt-5-mini":{input:.25,output:2,cache_read:.024999999999999998},"helicone/o4-mini":{input:1.1,output:4.4,cache_read:.275},"helicone/o3-mini":{input:1.1,output:4.4,cache_read:.55},"helicone/kimi-k2-0711":{input:.5700000000000001,output:2.3},"helicone/gpt-4.1-nano":{input:.09999999999999999,output:.39999999999999997,cache_read:.024999999999999998},"helicone/grok-4-fast-reasoning":{input:.19999999999999998,output:.5,cache_read:.049999999999999996},"helicone/qwen3-32b":{input:.29,output:.59},"helicone/gpt-5-nano":{input:.049999999999999996,output:.39999999999999997,cache_read:.005},"helicone/claude-3.5-sonnet-v2":{input:3,output:15,cache_read:.30000000000000004,cache_write:3.75},"helicone/gpt-5.1-chat-latest":{input:1.25,output:10,cache_read:.12500000000000003},"helicone/claude-4.5-sonnet":{input:3,output:15,cache_read:.30000000000000004,cache_write:3.75},"helicone/deepseek-tng-r1t2-chimera":{input:.3,output:1.2},"helicone/deepseek-v3":{input:.56,output:1.68,cache_read:.07},"helicone/deepseek-r1-distill-llama-70b":{input:.03,output:.13},"helicone/o1":{input:15,output:60,cache_read:7.5},"helicone/mistral-small":{input:.075,output:.2},"helicone/chatgpt-4o-latest":{input:5,output:20,cache_read:2.5},"helicone/qwen3-coder-30b-a3b-instruct":{input:.09999999999999999,output:.3},"helicone/sonar-pro":{input:3,output:15},"helicone/kimi-k2-thinking":{input:.48,output:2},"helicone/grok-4-fast-non-reasoning":{input:.19999999999999998,output:.5,cache_read:.049999999999999996},"helicone/claude-opus-4-1-20250805":{input:15,output:75,cache_read:1.5,cache_write:18.75},"helicone/gpt-5-pro":{input:15,output:120},"helicone/gpt-5-chat-latest":{input:1.25,output:10,cache_read:.12500000000000003},"helicone/deepseek-v3.1-terminus":{input:.27,output:1,cache_read:.21600000000000003},"helicone/claude-opus-4-1":{input:15,output:75,cache_read:1.5,cache_write:18.75},"helicone/gpt-5.1":{input:1.25,output:10,cache_read:.12500000000000003},"helicone/llama-3.3-70b-versatile":{input:.59,output:.7899999999999999},"helicone/llama-3.3-70b-instruct":{input:.13,output:.39},"helicone/grok-3-mini":{input:.3,output:.5,cache_read:.075},"helicone/gemma-3-12b-it":{input:.049999999999999996,output:.09999999999999999},"helicone/qwen2.5-coder-7b-fast":{input:.03,output:.09},"helicone/gpt-4o-mini":{input:.15,output:.6,cache_read:.075},"helicone/qwen3-next-80b-a3b-instruct":{input:.14,output:1.4},"helicone/o3-pro":{input:20,output:80},"helicone/gpt-oss-20b":{input:.049999999999999996,output:.19999999999999998},"helicone/gemini-2.5-pro":{input:1.25,output:10,cache_read:.3125,cache_write:1.25},"helicone/sonar-deep-research":{input:2,output:8},"helicone/gemini-2.5-flash":{input:.3,output:2.5,cache_read:.075,cache_write:.3},"helicone/claude-4.5-haiku":{input:1,output:5,cache_read:.09999999999999999,cache_write:1.25},"helicone/gemma2-9b-it":{input:.01,output:.03},"helicone/claude-3.7-sonnet":{input:3,output:15,cache_read:.30000000000000004,cache_write:3.75},"helicone/hermes-2-pro-llama-3-8b":{input:.14,output:.14},"helicone/claude-sonnet-4":{input:3,output:15,cache_read:.30000000000000004,cache_write:3.75},"helicone/qwen3-235b-a22b-thinking":{input:.3,output:2.9000000000000004},"helicone/grok-code-fast-1":{input:.19999999999999998,output:1.5,cache_read:.02},"helicone/claude-sonnet-4-5-20250929":{input:3,output:15,cache_read:.30000000000000004,cache_write:3.75},"helicone/gpt-4.1":{input:2,output:8,cache_read:.5},"helicone/qwen3-30b-a3b":{input:.08,output:.29},"helicone/kimi-k2-0905":{input:.5,output:2,cache_read:.39999999999999997},"helicone/llama-3.1-8b-instruct":{input:.02,output:.049999999999999996},"helicone/llama-3.1-8b-instruct-turbo":{input:.02,output:.03},"helicone/llama-prompt-guard-2-86m":{input:.01,output:.01},"helicone/claude-haiku-4-5-20251001":{input:1,output:5,cache_read:.09999999999999999,cache_write:1.25},"helicone/sonar":{input:1,output:1},"helicone/deepseek-reasoner":{input:.56,output:1.68,cache_read:.07},"helicone/gpt-4.1-mini":{input:.39999999999999997,output:1.5999999999999999,cache_read:.09999999999999999},"helicone/ernie-4.5-21b-a3b-thinking":{input:.07,output:.28},"helicone/claude-4.5-opus":{input:5,output:25,cache_read:.5,cache_write:6.25},"helicone/gemini-2.5-flash-lite":{input:.09999999999999999,output:.39999999999999997,cache_read:.024999999999999998,cache_write:.09999999999999999},"helicone/claude-3-haiku-20240307":{input:.25,output:1.25,cache_read:.03,cache_write:.3},"helicone/sonar-reasoning-pro":{input:2,output:8},"helicone/deepseek-v3.2":{input:.27,output:.41},"helicone/llama-prompt-guard-2-22m":{input:.01,output:.01},"helicone/gpt-oss-120b":{input:.04,output:.16},"helicone/gpt-5.1-codex-mini":{input:.25,output:2,cache_read:.024999999999999998},"helicone/o3":{input:2,output:8,cache_read:.5},"helicone/gpt-5":{input:1.25,output:10,cache_read:.12500000000000003},"helicone/llama-3.1-8b-instant":{input:.049999999999999996,output:.08},"helicone/sonar-reasoning":{input:1,output:5},"helicone/claude-opus-4":{input:15,output:75,cache_read:1.5,cache_write:18.75},"cortecs/gpt-5.4":{input:2.898,output:15.453,cache_read:.242},"cortecs/claude-haiku-4-5":{input:.996,output:4.982,cache_read:.099,cache_write:1.186},"cortecs/gpt-oss-safeguard-120b":{input:.179,output:.697},"cortecs/gemma-4-31b-it":{input:.223,output:.39},"cortecs/qwen3.8-27b":{input:.1,output:.4,cache_read:.04},"cortecs/gemma-3-27b-it":{input:.099,output:.299},"cortecs/qwen3.8-2.4t-a95b":{input:2.5,output:6,cache_read:.625},"cortecs/mistral-large-2402":{input:4.284,output:12.952},"cortecs/glm-5v-turbo":{input:1.186,output:3.955,cache_read:.296,cache_write:1.544},"cortecs/gpt-4o":{input:2.659,output:10.635,cache_read:1.33},"cortecs/glm-5.3-flash":{input:.1,output:.35,cache_read:.018},"cortecs/ministral-8b-2512":{input:.179,output:.179,cache_read:.017},"cortecs/deepseek-v4-flash-0731":{input:.09,output:.17,cache_read:.014},"cortecs/mistral-7b-instruct-v0.2":{input:.159,output:.219},"cortecs/qwen3-235b-a22b-instruct-2507":{input:.069,output:.455,cache_read:.018},"cortecs/kimi-k3":{input:3,output:14.999},"cortecs/qwen3-coder-next":{input:.167,output:.891},"cortecs/nova-lite-v1":{input:.069,output:.275},"cortecs/apertus-70b":{input:1.393,output:2.228},"cortecs/gpt-5-mini":{input:.279,output:2.192,cache_read:.056},"cortecs/glm-5":{input:.988,output:3.164,cache_read:.247},"cortecs/deepseek-v4.1-flash":{input:.3,output:1.2,cache_read:.075},"cortecs/gpt-4.1-nano":{input:.111,output:.434,cache_read:.056},"cortecs/minimax-m2.5":{input:.296,output:1.186,cache_read:.075},"cortecs/qwen3-32b":{input:.179,output:.697},"cortecs/mistral-medium-3.5":{input:1.532,output:7.843,cache_read:.154},"cortecs/gpt-5-nano":{input:.06,output:.439,cache_read:.019},"cortecs/claude-4-6-sonnet":{input:3.196,output:15.94,cache_read:.32,cache_write:3.999},"cortecs/kimi-k2.6":{input:.475,output:2.97,cache_read:.1},"cortecs/claude-4-5-sonnet":{input:2.989,output:14.945,cache_read:.326,cache_write:4.078},"cortecs/devstral-2512":{input:.478,output:2.392,cache_read:.045},"cortecs/gemini-3.6-flash":{input:.75,output:3.75,cache_read:.075,cache_write:.038},"cortecs/mistral-7b-instruct-v0.3":{input:.111,output:.111},"cortecs/qwen3-coder-30b-a3b-instruct":{input:.067,output:.245,cache_read:.014},"cortecs/mixtral-8x7B-instruct-v0.1":{input:.488,output:.758},"cortecs/gemma-4-26b-a4b-it":{input:.111,output:.557},"cortecs/gemini-3.5-flash-lite":{input:.33,output:2.749,cache_read:.033},"cortecs/voxtral-small-2507":{input:.123,output:.368,cache_read:.012},"cortecs/qwen3.5-122b-a10b":{input:.495,output:3.46,cache_read:.124},"cortecs/kimi-k2.5":{input:.495,output:2.768,cache_read:.124},"cortecs/gpt-5.1":{input:1.375,output:10.96,cache_read:.156},"cortecs/claude-opus-5":{input:5.5,output:27.498,cache_read:.55,cache_write:6.874},"cortecs/llama-3.3-70b-instruct":{input:.724,output:.724},"cortecs/gpt-4o-mini":{input:.159,output:.638,cache_read:.081},"cortecs/qwen3.6-35b-a3b":{input:.167,output:.557},"cortecs/pixtral-12b-2409":{input:.223,output:.223},"cortecs/gpt-oss-20b":{input:.045,output:.167},"cortecs/minimax-m2.7":{input:.668,output:2.674},"cortecs/gemini-3.5-flash":{input:1.649,output:9.899,cache_read:.165,cache_write:1},"cortecs/gemini-2.5-pro":{input:1.495,output:9.964,cache_read:.242,cache_write:.434},"cortecs/hermes-4-405b":{input:.996,output:2.989},"cortecs/gemini-2.5-flash":{input:.299,output:2.491,cache_read:.029,cache_write:.097},"cortecs/qwen3-vl-235b-a22b":{input:.617,output:3.119,cache_read:.052},"cortecs/deepseek-v4-pro-0813":{input:2,output:3.999,cache_read:.5},"cortecs/glm-4.7-flash":{input:.08,output:.478},"cortecs/qwen3.5-9b":{input:.111,output:.167},"cortecs/claude-opus4-6":{input:5.313,output:26.561,cache_read:.531,cache_write:6.645},"cortecs/claude-sonnet-4":{input:2.898,output:14.493,cache_read:.29,cache_write:3.624},"cortecs/minimax-m3":{input:.3,output:1.2,cache_read:.06},"cortecs/gpt-5.6-luna":{input:.219,output:1.32,cache_read:.022,cache_write:.275},"cortecs/qwen3.8-flash-next":{input:.201,output:.5,cache_read:.05},"cortecs/mistral-small-2603":{input:.156,output:.625,cache_read:.016},"cortecs/nemotron-nano-v2-12b":{input:.24,output:.707},"cortecs/mistral-small-2503":{input:.111,output:.334},"cortecs/gpt-4.1":{input:2.192,output:8.769,cache_read:.546},"cortecs/claude-sonnet-5":{input:2.2,output:11,cache_read:.219,cache_write:2.749},"cortecs/qwen3.5-397b-a17b":{input:.668,output:4.01},"cortecs/gemini-3.7-flash":{input:.75,output:3.75,cache_read:.075,cache_write:.038},"cortecs/glm-5.2":{input:.9,output:3.24,cache_read:.189},"cortecs/pixtral-large-2502":{input:1.993,output:5.978},"cortecs/claude-opus4-7":{input:5.437,output:27.186,cache_read:.544,cache_write:6.797},"cortecs/minicpm-v-4.5":{input:.651,output:1.097},"cortecs/llama-3.1-8b-instruct":{input:.167,output:.167},"cortecs/glm-5.1":{input:1.384,output:4.348,cache_read:.346},"cortecs/qwen3-30b-a3b-instruct-2507":{input:.099,output:.299},"cortecs/qwen2.5-vl-72b-instruct":{input:1.014,output:1.014},"cortecs/mistral-large-2512":{input:.613,output:1.838,cache_read:.061},"cortecs/gpt-4.1-mini":{input:.434,output:1.704,cache_read:.134},"cortecs/gemini-3.8-flash":{input:.825,output:4.125,cache_read:.082,cache_write:.084},"cortecs/ministral-14b-2512":{input:.24,output:.24,cache_read:.022},"cortecs/glm-5-turbo":{input:1.186,output:3.955,cache_read:.296,cache_write:1.544},"cortecs/gpt-6-luna":{input:.12,output:.6,cache_read:.012,cache_write:.15},"cortecs/deepseek-v4-pro":{input:1.7,output:3.4,cache_read:.15},"cortecs/claude-opus-5.5":{input:4.399,output:21.998,cache_read:.219,cache_write:5.5},"cortecs/qwen3.6-27b":{input:.446,output:3.008},"cortecs/claude-opus4-8":{input:5.437,output:27.186,cache_read:.544,cache_write:6.797},"cortecs/mistral-small-3.2-24b-instruct-2506":{input:.1,output:.312},"cortecs/deepseek-r1-0528":{input:.652,output:2.57,cache_read:.163},"cortecs/gpt-5.6-terra":{input:2.2,output:13.199,cache_read:.219,cache_write:2.749},"cortecs/deepseek-v3.2":{input:.296,output:.495,cache_read:.075},"cortecs/nova-2-lite":{input:.373,output:3.144},"cortecs/nova-pro-v1":{input:.918,output:3.671},"cortecs/gpt-oss-120b":{input:.089,output:.446,cache_read:.01},"cortecs/ministral-3b-2512":{input:.123,output:.123,cache_read:.012},"cortecs/claude-opus4-5":{input:5.313,output:26.568,cache_read:.531,cache_write:6.645},"cortecs/glm-5.3":{input:.873,output:3.306,cache_read:.221},"cortecs/kimi-k2.7-code":{input:.656,output:3.3,cache_read:.18},"cortecs/gpt-5":{input:1.375,output:10.96,cache_read:.156},"cortecs/minimax-m2.1":{input:.359,output:1.435},"cortecs/gpt-5.6-sol":{input:4.399,output:21.998,cache_read:.44,cache_write:5.5},"cortecs/mistral-nemo-instruct-2407":{input:.145,output:.145,cache_read:.014},"cortecs/minimax-m2":{input:.349,output:1.405},"cortecs/nova-micro-v1":{input:.04,output:.159},"cortecs/codestral-2508":{input:.368,output:1.103,cache_read:.037},"cortecs/gpt-6-sol":{input:2.4,output:11.999,cache_read:.24,cache_write:3},"cortecs/nvidia-nemotron-3-nano-30b-a3b":{input:.06,output:.24},"cortecs/gemini-3.1-flash-lite":{input:.272,output:1.631,cache_read:.025,cache_write:.082},"agnes/agnes-2.5-pro-alpha":{input:.45,output:.9,cache_read:.0038},"daoxe/gpt-5.4":{input:2.5,output:15,cache_read:.25},"daoxe/grok-4.3":{input:1.25,output:2.5,cache_read:.2},"daoxe/gemini-3.1-pro-preview":{input:2,output:12,cache_read:.2},"daoxe/grok-4.5":{input:2,output:6,cache_read:.5},"daoxe/kimi-k2.5":{input:.6,output:3,cache_read:.1},"daoxe/claude-opus-4-8":{input:5,output:25,cache_read:.5,cache_write:6.25},"daoxe/gpt-5.5":{input:5,output:30,cache_read:.5},"daoxe/claude-haiku-4-5-20251001":{input:1,output:5,cache_read:.1,cache_write:5},"daoxe/claude-sonnet-4-6":{input:3,output:15,cache_read:.3,cache_write:3.75},"morph/morph-v3-large":{input:.9,output:1.9},"morph/morph-v3-fast":{input:.8,output:1.2},"morph/auto":{input:.85,output:1.55},"openai/gpt-5.4":{input:2.5,output:15,cache_read:.25,tiers:[{input:5,output:22.5,cache_read:.5,tier:{type:"context",size:272e3}}],context_over_200k:{input:5,output:22.5,cache_read:.5}},"openai/gpt-5.4-pro":{input:30,output:180,tiers:[{input:60,output:270,tier:{type:"context",size:272e3}}],context_over_200k:{input:60,output:270}},"openai/gpt-3.5-turbo":{input:.5,output:1.5,cache_read:0},"openai/gpt-5.5-pro":{input:30,output:180,tiers:[{input:60,output:270,tier:{type:"context",size:272e3}}],context_over_200k:{input:60,output:270}},"openai/text-embedding-3-small":{input:.02,output:0},"openai/gpt-5.4-nano":{input:.2,output:1.25,cache_read:.02},"openai/gpt-realtime-2.1":{input:4,output:24,cache_read:.4,input_audio:32,output_audio:64},"openai/gpt-4o-2024-05-13":{input:5,output:15},"openai/gpt-4o":{input:2.5,output:10,cache_read:1.25},"openai/gpt-5-mini":{input:.25,output:2,cache_read:.025},"openai/gpt-image-2":{input:5,output:30,cache_read:1.25},"openai/gpt-5.2-pro":{input:21,output:168},"openai/o4-mini":{input:1.1,output:4.4,cache_read:.275},"openai/o3-mini":{input:1.1,output:4.4,cache_read:.55},"openai/text-embedding-ada-002":{input:.1,output:0},"openai/gpt-4":{input:30,output:60},"openai/gpt-5.3-codex":{input:1.75,output:14,cache_read:.175},"openai/gpt-4.1-nano":{input:.1,output:.4,cache_read:.025},"openai/gpt-5-nano":{input:.05,output:.4,cache_read:.005},"openai/gpt-5.6":{input:4,output:20,cache_read:.4,cache_write:5,tiers:[{input:8,output:30,cache_read:.8,cache_write:10,tier:{type:"context",size:272e3}}],context_over_200k:{input:8,output:30,cache_read:.8,cache_write:10}},"openai/gpt-5.2-chat-latest":{input:1.75,output:14,cache_read:.175},"openai/o1":{input:15,output:60,cache_read:7.5},"openai/gpt-5-pro":{input:15,output:120},"openai/gpt-5.3-codex-spark":{input:1.75,output:14,cache_read:.175},"openai/text-embedding-3-large":{input:.13,output:0},"openai/gpt-4o-2024-08-06":{input:2.5,output:10,cache_read:1.25},"openai/gpt-6-astra":{input:10,output:50,cache_read:1,cache_write:12.5,tiers:[{input:20,output:75,cache_read:2,cache_write:25,tier:{type:"context",size:272e3}}],context_over_200k:{input:20,output:75,cache_read:2,cache_write:25}},"openai/gpt-5.1":{input:1.25,output:10,cache_read:.125},"openai/gpt-4o-mini":{input:.15,output:.6,cache_read:.075},"openai/o3-pro":{input:20,output:80},"openai/gpt-5.4-mini":{input:.75,output:4.5,cache_read:.075},"openai/gpt-5.6-luna":{input:.2,output:1.2,cache_read:.02,cache_write:.25,tiers:[{input:.4,output:1.8,cache_read:.04,cache_write:.5,tier:{type:"context",size:272e3}}],context_over_200k:{input:.4,output:1.8,cache_read:.04,cache_write:.5}},"openai/gpt-5.2":{input:1.75,output:14,cache_read:.175},"openai/gpt-5.5":{input:5,output:30,cache_read:.5,tiers:[{input:10,output:45,cache_read:1,tier:{type:"context",size:272e3}}],context_over_200k:{input:10,output:45,cache_read:1}},"openai/gpt-4.1":{input:2,output:8,cache_read:.5},"openai/gpt-4o-2024-11-20":{input:2.5,output:10,cache_read:1.25},"openai/gpt-4.1-mini":{input:.4,output:1.6,cache_read:.1},"openai/gpt-6-luna":{input:.1,output:.5,cache_read:.01,cache_write:.125,tiers:[{input:.2,output:.75,cache_read:.02,cache_write:.25,tier:{type:"context",size:272e3}}],context_over_200k:{input:.2,output:.75,cache_read:.02,cache_write:.25}},"openai/gpt-5.3-chat-latest":{input:1.75,output:14,cache_read:.175},"openai/gpt-5.6-terra":{input:2,output:12,cache_read:.2,cache_write:2.5,tiers:[{input:4,output:18,cache_read:.4,cache_write:5,tier:{type:"context",size:272e3}}],context_over_200k:{input:4,output:18,cache_read:.4,cache_write:5}},"openai/gpt-4-turbo":{input:10,output:30},"openai/o3":{input:2,output:8,cache_read:.5},"openai/gpt-5":{input:1.25,output:10,cache_read:.125},"openai/gpt-5.6-sol":{input:4,output:20,cache_read:.4,cache_write:5,tiers:[{input:8,output:30,cache_read:.8,cache_write:10,tier:{type:"context",size:272e3}}],context_over_200k:{input:8,output:30,cache_read:.8,cache_write:10}},"openai/gpt-6-sol":{input:2,output:10,cache_read:.2,cache_write:2.5,tiers:[{input:4,output:15,cache_read:.4,cache_write:5,tier:{type:"context",size:272e3}}],context_over_200k:{input:4,output:15,cache_read:.4,cache_write:5}},"openai/o1-pro":{input:150,output:600},"alibaba-coding-plan-cn/qwen3.7-max":{input:2.5,output:7.5,cache_read:.5,cache_write:3.125},"alibaba-coding-plan-cn/qwen3.6-flash":{input:.1875,output:1.125,cache_write:.234375},"io-net/meta-llama/Llama-3.2-90B-Vision-Instruct":{input:.35,output:.4,cache_read:.175,cache_write:.7},"io-net/meta-llama/Llama-3.3-70B-Instruct":{input:.13,output:.38,cache_read:.065,cache_write:.26},"io-net/meta-llama/Llama-4-Maverick-17B-128E-Instruct-FP8":{input:.15,output:.6,cache_read:.075,cache_write:.3},"io-net/Qwen/Qwen3-Next-80B-A3B-Instruct":{input:.1,output:.8,cache_read:.05,cache_write:.2},"io-net/Qwen/Qwen3-235B-A22B-Thinking-2507":{input:.11,output:.6,cache_read:.055,cache_write:.22},"io-net/Qwen/Qwen2.5-VL-32B-Instruct":{input:.05,output:.22,cache_read:.025,cache_write:.1},"io-net/deepseek-ai/DeepSeek-R1-0528":{input:2,output:8.75,cache_read:1,cache_write:4},"io-net/mistralai/Mistral-Nemo-Instruct-2407":{input:.02,output:.04,cache_read:.01,cache_write:.04},"io-net/mistralai/Magistral-Small-2506":{input:.5,output:1.5,cache_read:.25,cache_write:1},"io-net/mistralai/Devstral-Small-2505":{input:.05,output:.22,cache_read:.025,cache_write:.1},"io-net/mistralai/Mistral-Large-Instruct-2411":{input:2,output:6,cache_read:1,cache_write:4},"io-net/Intel/Qwen3-Coder-480B-A35B-Instruct-int4-mixed-ar":{input:.22,output:.95,cache_read:.11,cache_write:.44},"io-net/moonshotai/Kimi-K2-Thinking":{input:.55,output:2.25,cache_read:.275,cache_write:1.1},"io-net/moonshotai/Kimi-K2-Instruct-0905":{input:.39,output:1.9,cache_read:.195,cache_write:.78},"io-net/zai-org/GLM-4.6":{input:.4,output:1.75,cache_read:.2,cache_write:.8},"io-net/openai/gpt-oss-20b":{input:.03,output:.14,cache_read:.015,cache_write:.06},"io-net/openai/gpt-oss-120b":{input:.04,output:.4,cache_read:.02,cache_write:.08},"infomaniak/bge_multilingual_gemma2":{input:.08,output:0},"infomaniak/swiss-ai/Apertus-v1.5-70B":{input:.87,output:3.1},"infomaniak/google/gemma-4-31B-it":{input:.25,output:.5},"infomaniak/Qwen/Qwen3.5-122B-A10B-FP8":{input:.5,output:3.97},"infomaniak/Qwen/Qwen3.5-397B-A17B-FP8":{input:.99,output:4.46},"infomaniak/mistralai/Mistral-Small-4-119B-2603":{input:.25,output:.93},"infomaniak/mistralai/Ministral-3-14B-Instruct-2512":{input:.37,output:.5},"infomaniak/moonshotai/Kimi-K2.6":{input:.74,output:3.72},"infomaniak/nvidia/NVIDIA-Nemotron-3-Nano-30B-A3B-FP8":{input:.06,output:.25},"llmtech/nvidia/Qwen3.8-27B-NVFP4":{input:.25,output:2.09,cache_read:.04},"crossmodel/anthropic/claude-haiku-4-5":{input:1,output:5,cache_read:.1,cache_write:1.25},"crossmodel/anthropic/claude-opus-5-5":{input:4,output:20,cache_read:.2,cache_write:5},"crossmodel/anthropic/claude-fable-5-1":{input:10,output:50,cache_read:.25,cache_write:12.5},"crossmodel/anthropic/claude-opus-5":{input:5,output:25,cache_read:.5,cache_write:6.25},"crossmodel/anthropic/claude-fable-5":{input:10,output:50,cache_read:1,cache_write:12.5},"crossmodel/anthropic/claude-opus-4-8":{input:5,output:25,cache_read:.5,cache_write:6.25},"crossmodel/anthropic/claude-sonnet-5":{input:2,output:10,cache_read:.2,cache_write:2.5},"crossmodel/anthropic/claude-sonnet-4-6":{input:3,output:15,cache_read:.3,cache_write:3.75},"crossmodel/anthropic/claude-opus-4-7":{input:5,output:25,cache_read:.5,cache_write:6.25},"crossmodel/deepseek/deepseek-v4.1-flash":{input:.27,output:1.08,cache_read:.0054,cache_write:.27},"crossmodel/deepseek/deepseek-v4-flash-vision-exp":{input:.27,output:1.08,cache_read:.0054,cache_write:.27},"crossmodel/deepseek/deepseek-v4-pro":{input:1.215,output:3.645,cache_read:.0405,cache_write:1.215},"crossmodel/deepseek/deepseek-v4-flash":{input:.27,output:1.08,cache_read:.0054,cache_write:.27},"crossmodel/tencent/hy3":{input:.16,output:.64,cache_read:.04,cache_write:.16},"crossmodel/tencent/hy4-preview":{input:.96,output:2.88,cache_read:.048,cache_write:.96},"crossmodel/z-ai/glm-5.3-flash":{input:.15,output:.5,cache_read:.03,cache_write:.15},"crossmodel/z-ai/glm-5":{input:.6,output:3,cache_read:.16,cache_write:.6,tiers:[{input:.8,output:3.4,cache_read:.2,cache_write:.8,tier:{type:"context",size:32e3}}]},"crossmodel/z-ai/glm-4.7":{input:.47,output:2.16,cache_read:.1,cache_write:.47,tiers:[{input:.62,output:2.47,cache_read:.13,cache_write:.62,tier:{type:"context",size:32e3}}]},"crossmodel/z-ai/glm-5.2":{input:1.2,output:4.4,cache_read:.3,cache_write:1.2},"crossmodel/z-ai/glm-5.1":{input:1,output:3.8,cache_read:.2,cache_write:1,tiers:[{input:1.2,output:4.4,cache_read:.3,cache_write:1.2,tier:{type:"context",size:32e3}}]},"crossmodel/z-ai/glm-5-turbo":{input:.9,output:3.7,cache_read:.18,cache_write:.9,tiers:[{input:1.1,output:4.3,cache_read:.27,cache_write:1.1,tier:{type:"context",size:32e3}}]},"crossmodel/z-ai/glm-5.3":{input:1.2,output:4.4,cache_read:.3,cache_write:1.2},"crossmodel/x-ai/grok-4.7":{input:2,output:6,cache_read:.5,cache_write:2,tiers:[{input:4,output:12,cache_read:1,cache_write:4,tier:{type:"context",size:2e5}}],context_over_200k:{input:4,output:12,cache_read:1,cache_write:4}},"crossmodel/x-ai/grok-4.3":{input:1.25,output:2.5,cache_read:.2,cache_write:1.25,tiers:[{input:2.5,output:5,cache_read:.4,cache_write:2.5,tier:{type:"context",size:2e5}}],context_over_200k:{input:2.5,output:5,cache_read:.4,cache_write:2.5}},"crossmodel/x-ai/grok-4.5":{input:2,output:6,cache_read:.3,cache_write:2,tiers:[{input:4,output:12,cache_read:.6,cache_write:4,tier:{type:"context",size:2e5}}],context_over_200k:{input:4,output:12,cache_read:.6,cache_write:4}},"crossmodel/x-ai/grok-build-0.1":{input:1,output:2,cache_read:.2,cache_write:1,tiers:[{input:2,output:4,cache_read:.4,cache_write:2,tier:{type:"context",size:2e5}}],context_over_200k:{input:2,output:4,cache_read:.4,cache_write:2}},"crossmodel/x-ai/grok-4.6":{input:2,output:6,cache_read:.5,cache_write:2,tiers:[{input:4,output:12,cache_read:1,cache_write:4,tier:{type:"context",size:2e5}}],context_over_200k:{input:4,output:12,cache_read:1,cache_write:4}},"crossmodel/xiaomi/mimo-v2.6-pro":{input:.47,output:.94,cache_read:.005,cache_write:.47},"crossmodel/xiaomi/mimo-v2.5":{input:.16,output:.32,cache_read:.004,cache_write:.16},"crossmodel/xiaomi/mimo-v2.5-pro":{input:.47,output:.94,cache_read:.005,cache_write:.47},"crossmodel/xiaomi/mimo-v2.6-flash":{input:.16,output:.32,cache_read:.004,cache_write:.16},"crossmodel/minimax/minimax-m2.7":{input:.33,output:1.32,cache_read:.066,cache_write:.42},"crossmodel/minimax/minimax-m3":{input:.33,output:1.32,cache_read:.066,cache_write:.33,tiers:[{input:.66,output:2.63,cache_read:.132,cache_write:.66,tier:{type:"context",size:512e3}}],context_over_200k:{input:.66,output:2.63,cache_read:.132,cache_write:.66}},"crossmodel/gemini/gemini-3.6-flash":{input:.75,output:3.75,cache_read:.075,cache_write:.75},"crossmodel/gemini/gemini-3.5-flash-lite":{input:.3,output:2.5,cache_read:.03,cache_write:.3},"crossmodel/gemini/gemini-3.1-pro-preview":{input:2,output:12,cache_read:.2,cache_write:2,tiers:[{input:4,output:18,cache_read:.4,cache_write:4,tier:{type:"context",size:2e5}}],context_over_200k:{input:4,output:18,cache_read:.4,cache_write:4}},"crossmodel/gemini/gemini-3.5-flash":{input:1.5,output:9,cache_read:.15,cache_write:1.5},"crossmodel/gemini/gemini-2.5-pro":{input:1.25,output:10,cache_read:.125,cache_write:1.25,tiers:[{input:2.5,output:15,cache_read:.25,cache_write:2.5,tier:{type:"context",size:2e5}}],context_over_200k:{input:2.5,output:15,cache_read:.25,cache_write:2.5}},"crossmodel/gemini/gemini-2.5-flash":{input:.3,output:2.5,cache_read:.03,cache_write:.3},"crossmodel/gemini/gemini-3.7-flash":{input:.75,output:3.75,cache_read:.075,cache_write:.75},"crossmodel/gemini/gemini-3-flash-preview":{input:.5,output:3,cache_read:.05,cache_write:.5},"crossmodel/gemini/gemini-3.8-flash":{input:.75,output:3.75,cache_read:.075,cache_write:.75},"crossmodel/gemini/gemini-2.5-flash-lite":{input:.1,output:.4,cache_read:.01,cache_write:.1},"crossmodel/qwen/qwen3.7-max":{input:1.88,output:5.63,cache_read:.375,cache_write:2.35},"crossmodel/qwen/qwen3.8-max":{input:1.88,output:5.63,cache_read:.23,cache_write:2.35},"crossmodel/qwen/qwen3.7-flash":{input:.04,output:.13,cache_read:.01,cache_write:.04,tiers:[{input:.1,output:.37,cache_read:.02,cache_write:.12,tier:{type:"context",size:32e3}},{input:.19,output:.74,cache_read:.04,cache_write:.24,tier:{type:"context",size:256e3}}]},"crossmodel/qwen/qwen3.8-omni-flash":{input:.13,output:.43,cache_read:.016,cache_write:.13},"crossmodel/qwen/qwen3.6-flash":{input:.19,output:1.13,cache_read:.019,cache_write:.24,tiers:[{input:.75,output:4.5,cache_read:.075,cache_write:.94,tier:{type:"context",size:256e3}}],context_over_200k:{input:.75,output:4.5,cache_read:.075,cache_write:.94}},"crossmodel/qwen/qwen3.8-flash":{input:.13,output:.43,cache_read:.016,cache_write:.2},"crossmodel/qwen/qwen3.6-plus":{input:.32,output:1.88,cache_read:.032,cache_write:.4,tiers:[{input:1.25,output:7.5,cache_read:.124,cache_write:1.57,tier:{type:"context",size:256e3}}],context_over_200k:{input:1.25,output:7.5,cache_read:.124,cache_write:1.57}},"crossmodel/qwen/qwen3.7-plus":{input:.32,output:1.25,cache_read:.032,cache_write:.4,tiers:[{input:.96,output:3.75,cache_read:.096,cache_write:1.2,tier:{type:"context",size:256e3}}],context_over_200k:{input:.96,output:3.75,cache_read:.096,cache_write:1.2}},"crossmodel/openai/gpt-5.4":{input:2.5,output:15,cache_read:.25,cache_write:2.5,tiers:[{input:5,output:22.5,cache_read:.5,cache_write:5,tier:{type:"context",size:272e3}}],context_over_200k:{input:5,output:22.5,cache_read:.5,cache_write:5}},"crossmodel/openai/gpt-5.5-pro":{input:30,output:180,tiers:[{input:60,output:270,tier:{type:"context",size:272e3}}],context_over_200k:{input:60,output:270}},"crossmodel/openai/gpt-5.4-nano":{input:.2,output:1.25,cache_read:.02,cache_write:.2},"crossmodel/openai/gpt-6-astra":{input:10,output:50,cache_read:1,cache_write:12.5,tiers:[{input:20,output:75,cache_read:2,cache_write:25,tier:{type:"context",size:272e3}}],context_over_200k:{input:20,output:75,cache_read:2,cache_write:25}},"crossmodel/openai/gpt-4o-mini":{input:.15,output:.6,cache_read:.075,cache_write:.15},"crossmodel/openai/gpt-5.4-mini":{input:.75,output:4.5,cache_read:.075,cache_write:.75},"crossmodel/openai/gpt-5.6-luna":{input:.2,output:1.2,cache_read:.02,cache_write:.25,tiers:[{input:.4,output:1.8,cache_read:.04,cache_write:.5,tier:{type:"context",size:272e3}}],context_over_200k:{input:.4,output:1.8,cache_read:.04,cache_write:.5}},"crossmodel/openai/gpt-5.5":{input:5,output:30,cache_read:.5,cache_write:5,tiers:[{input:10,output:45,cache_read:1,cache_write:10,tier:{type:"context",size:272e3}}],context_over_200k:{input:10,output:45,cache_read:1,cache_write:10}},"crossmodel/openai/gpt-6-luna":{input:.1,output:.5,cache_read:.01,cache_write:.125,tiers:[{input:.2,output:.75,cache_read:.02,cache_write:.25,tier:{type:"context",size:272e3}}],context_over_200k:{input:.2,output:.75,cache_read:.02,cache_write:.25}},"crossmodel/openai/gpt-5.6-terra":{input:2,output:12,cache_read:.2,cache_write:2.5,tiers:[{input:4,output:18,cache_read:.4,cache_write:5,tier:{type:"context",size:272e3}}],context_over_200k:{input:4,output:18,cache_read:.4,cache_write:5}},"crossmodel/openai/gpt-5.6-sol":{input:4,output:20,cache_read:.4,cache_write:5,tiers:[{input:8,output:30,cache_read:.8,cache_write:10,tier:{type:"context",size:272e3}}],context_over_200k:{input:8,output:30,cache_read:.8,cache_write:10}},"crossmodel/openai/gpt-6-sol":{input:2,output:10,cache_read:.2,cache_write:2.5,tiers:[{input:4,output:15,cache_read:.4,cache_write:5,tier:{type:"context",size:272e3}}],context_over_200k:{input:4,output:15,cache_read:.4,cache_write:5}},"crossmodel/moonshot/kimi-k3":{input:3,output:15,cache_read:.3,cache_write:3},"crossmodel/moonshot/kimi-k2.6":{input:1,output:4.16,cache_read:.18,cache_write:1},"crossmodel/moonshot/kimi-k2.7-code":{input:1,output:4.16,cache_read:.18,cache_write:1},"arcee/trinity-large-thinking":{input:.25,output:.8,cache_read:.06},"arcee/deepseek/deepseek-v4-pro-0813":{input:1.32,output:3.96,cache_read:.044},"arcee/deepseek/deepseek-v4-pro":{input:1.74,output:3.48,cache_read:.2},"arcee/deepseek/deepseek-v4-flash-latest":{input:.14,output:.28,cache_read:.028},"arcee/thinkingmachines/inkling-small":{input:.5,output:1.2,cache_read:.1},"arcee/moonshotai/kimi-k3":{input:3,output:15,cache_read:.3},"arcee/zai-org/glm-5.2":{input:1.4,output:4.4,cache_read:.26},"drun/public/deepseek-v3":{input:.28,output:1.1},"drun/public/minimax-m25":{input:.29,output:1.16},"drun/public/deepseek-r1":{input:.55,output:2.2},"amd/DeepSeek-V4.1-Flash":{input:.14,output:.28,cache_read:.0028},"amd/DeepSeek-V4-Flash":{input:.14,output:.28,cache_read:.0028},"amd/Qwen3.8-Flash-Next":{input:.15,output:.47,cache_read:.016},"amd/MiniCPM5-2B":{input:.124,output:.7425,cache_read:.124},"amd/DeepSeek-V4-Flash-Vision-Exp":{input:.14,output:.28,cache_read:.0028},"claudinio/claudinio":{input:.5,output:2,cache_read:.15},"claudinio/claudius":{input:3,output:8,cache_read:.9},"runinfra/Inferact/Qwen3.8-2.4T-A95B-NVFP4":{input:2,output:6,cache_read:.2},"runinfra/Qwen/Qwen3.8-27B":{input:.1,output:.4,cache_read:.01},"runinfra/deepseek-ai/DeepSeek-V4-Flash-0731":{input:.13,output:.27,cache_read:.01},"runinfra/deepseek-ai/DeepSeek-V4-Pro-0813":{input:.6,output:1.9,cache_read:.03},"runinfra/zai-org/GLM-5.3-Flash":{input:.1,output:.4,cache_read:.01},"runinfra/nvidia/NVIDIA-Nemotron-3.5-Lightning-30B-A3B-BF16":{input:.05,output:.15,cache_read:.01},"runinfra/ornith-ai/Ornith-1.5-35B-A3B":{input:.1,output:.4,cache_read:.01},"digitalocean/deepseek-3.2":{input:.5,output:1.6,cache_read:.15},"digitalocean/openai-gpt-5.5":{input:5,output:30,cache_read:.5,tiers:[{input:10,output:45,cache_read:1,tier:{type:"context",size:272e3}}],context_over_200k:{input:10,output:45,cache_read:1}},"digitalocean/openai-gpt-5.2-pro":{input:21,output:168},"digitalocean/all-mini-lm-l6-v2":{input:.009,output:0},"digitalocean/multi-qa-mpnet-base-dot-v1":{input:.009,output:0},"digitalocean/openai-gpt-image-1":{input:5,output:40,cache_read:1.25},"digitalocean/anthropic-claude-3-opus":{input:15,output:75,cache_read:1.5,cache_write:18.75},"digitalocean/anthropic-claude-4.6-sonnet":{input:3,output:15,cache_read:.3,cache_write:3.75,tiers:[{input:6,output:22.5,cache_read:.6,cache_write:7.5,tier:{type:"context",size:2e5}}],context_over_200k:{input:6,output:22.5,cache_read:.6,cache_write:7.5}},"digitalocean/anthropic-claude-haiku-4.5":{input:1,output:5,cache_read:.1,cache_write:1.25},"digitalocean/glm-5.3-flash":{input:.15,output:.5,cache_read:.03},"digitalocean/openai-o1":{input:15,output:60,cache_read:7.5},"digitalocean/deepseek-v4-flash-0731":{input:.14,output:.28,cache_read:.028},"digitalocean/anthropic-claude-opus-4.7":{input:5,output:25,cache_read:.5,cache_write:6.25},"digitalocean/stable-diffusion-3.5-large":{input:.08,output:0},"digitalocean/openai-gpt-6-luna":{input:.1,output:.5,cache_read:.01,tiers:[{input:.2,output:.75,cache_read:.02,tier:{type:"context",size:272e3}}],context_over_200k:{input:.2,output:.75,cache_read:.02}},"digitalocean/qwen3.8-max":{input:2,output:6,cache_read:.2},"digitalocean/kimi-k3":{input:3,output:15,cache_read:.3},"digitalocean/anthropic-claude-opus-5.5":{input:4,output:20,cache_read:.2,cache_write:5,tiers:[{input:8,output:30,cache_read:.4,cache_write:10,tier:{type:"context",size:2e5}}],context_over_200k:{input:8,output:30,cache_read:.4,cache_write:10}},"digitalocean/llama-4-maverick":{input:.25,output:.87},"digitalocean/openai-o3-mini":{input:1.1,output:4.4,cache_read:.55},"digitalocean/glm-5":{input:1,output:3.2,cache_read:.2},"digitalocean/deepseek-v4.1-flash":{input:.3,output:1.2,cache_read:.006},"digitalocean/minimax-m2.5":{input:.3,output:1.2,cache_read:.06},"digitalocean/anthropic-claude-4.1-opus":{input:15,output:75,cache_read:1.5,cache_write:18.75},"digitalocean/wan2-2-t2v-a14b":{input:.6,output:0},"digitalocean/openai-gpt-4o":{input:2.5,output:10,cache_read:1.25},"digitalocean/anthropic-claude-4.5-haiku":{input:1,output:5,cache_read:1,cache_write:1.25},"digitalocean/anthropic-claude-fable-5.1":{input:10,output:50,cache_read:.25,cache_write:12.5},"digitalocean/kimi-k2.6":{input:.95,output:4,cache_read:.19},"digitalocean/deepseek-r1-distill-llama-70b":{input:.99,output:.99},"digitalocean/openai-gpt-5-nano":{input:.05,output:.4,cache_read:.005},"digitalocean/qwen3-embedding-0.6b":{input:.04,output:0},"digitalocean/openai-o3":{input:2,output:8,cache_read:.5},"digitalocean/openai-gpt-5":{input:1.25,output:10,cache_read:.125},"digitalocean/openai-gpt-4.1":{input:2,output:8,cache_read:.5},"digitalocean/openai-gpt-5.1-codex-max":{input:1.25,output:10,cache_read:.125},"digitalocean/anthropic-claude-3.5-haiku":{input:.8,output:4,cache_read:.08,cache_write:1},"digitalocean/anthropic-claude-3.5-sonnet":{input:3,output:15,cache_read:.3,cache_write:3.75},"digitalocean/kimi-k2.5":{input:.5,output:2.7,cache_read:.203},"digitalocean/anthropic-claude-opus-4":{input:15,output:75,cache_read:1.5,cache_write:18.75},"digitalocean/openai-gpt-6-astra":{input:10,output:50,cache_read:1,tiers:[{input:20,output:75,cache_read:2,tier:{type:"context",size:272e3}}],context_over_200k:{input:20,output:75,cache_read:2}},"digitalocean/openai-gpt-image-2":{input:8,output:30},"digitalocean/openai-gpt-image-1.5":{input:5,output:10,cache_read:1},"digitalocean/openai-gpt-4o-mini":{input:.15,output:.6,cache_read:.075},"digitalocean/qwen3-coder-flash":{input:.45,output:1.7,cache_read:.09},"digitalocean/deepseek-4-flash":{input:.14,output:.28,cache_read:.028},"digitalocean/nemotron-3-ultra-550b":{input:.9,output:1.7},"digitalocean/openai-gpt-5.2":{input:1.75,output:14,cache_read:.175},"digitalocean/nvidia-nemotron-3-super-120b":{input:.3,output:.65,cache_read:.06},"digitalocean/deepseek-v4-pro-0813":{input:1.32,output:3.96,cache_read:.044},"digitalocean/mimo-v2.5-pro":{input:.8,output:3,cache_read:.16},"digitalocean/mistral-3-14B":{input:.2,output:.2},"digitalocean/anthropic-claude-opus-5":{input:5,output:25,cache_read:.5,cache_write:6.25},"digitalocean/nemotron-3-nano-omni":{input:.5,output:.9},"digitalocean/arcee-trinity-large-thinking":{input:.25,output:.9,cache_read:.06},"digitalocean/anthropic-claude-5-sonnet":{input:2,output:10,cache_read:.2,cache_write:2.5},"digitalocean/openai-gpt-5.4-pro":{input:30,output:180,tiers:[{input:60,output:270,tier:{type:"context",size:272e3}}],context_over_200k:{input:60,output:270}},"digitalocean/llama3-8b-instruct":{input:.198,output:.198},"digitalocean/llama3.3-70b-instruct":{input:.65,output:.65},"digitalocean/openai-gpt-oss-120b":{input:.1,output:.7,cache_read:.02},"digitalocean/alibaba-qwen3-32b":{input:.25,output:.55},"digitalocean/openai-gpt-5.3-codex":{input:1.75,output:14,cache_read:.175},"digitalocean/qwen3.5-397b-a17b":{input:.55,output:3.5,cache_read:.111},"digitalocean/anthropic-claude-3.7-sonnet":{input:3,output:15,cache_read:.3,cache_write:3.75},"digitalocean/anthropic-claude-opus-4.8":{input:5,output:25,cache_read:.5,cache_write:6.25},"digitalocean/openai-gpt-5.6-luna":{input:.2,output:1.2,cache_read:.02,tiers:[{input:.4,output:1.8,cache_read:.04,tier:{type:"context",size:272e3}}],context_over_200k:{input:.4,output:1.8,cache_read:.04}},"digitalocean/glm-5.2":{input:1.4,output:4.4,cache_read:.21},"digitalocean/openai-gpt-6-sol":{input:2,output:10,cache_read:.2,tiers:[{input:4,output:15,cache_read:.4,tier:{type:"context",size:272e3}}],context_over_200k:{input:4,output:15,cache_read:.4}},"digitalocean/anthropic-claude-4.5-sonnet":{input:3,output:15,cache_read:.3,cache_write:3.75,tiers:[{input:6,output:22.5,cache_read:.6,cache_write:7.5,tier:{type:"context",size:2e5}}],context_over_200k:{input:6,output:22.5,cache_read:.6,cache_write:7.5}},"digitalocean/bge-m3":{input:.02,output:0},"digitalocean/openai-gpt-5.6-sol":{input:4,output:20,cache_read:.4,tiers:[{input:8,output:30,cache_read:.8,tier:{type:"context",size:272e3}}],context_over_200k:{input:8,output:30,cache_read:.8}},"digitalocean/glm-5.1":{input:1.3,output:4.3,cache_read:.26},"digitalocean/openai-gpt-5.4-nano":{input:.2,output:1.25,cache_read:.02},"digitalocean/bge-reranker-v2-m3":{input:.01,output:0},"digitalocean/nemotron-nano-12b-v2-vl":{input:.2,output:.6},"digitalocean/openai-gpt-5.4-mini":{input:.75,output:4.5,cache_read:.075},"digitalocean/openai-gpt-5-mini":{input:.25,output:2,cache_read:.025},"digitalocean/anthropic-claude-opus-4.6":{input:5,output:25,cache_read:.5,cache_write:6.25,tiers:[{input:10,output:37.5,cache_read:1,cache_write:12.5,tier:{type:"context",size:2e5}}],context_over_200k:{input:10,output:37.5,cache_read:1,cache_write:12.5}},"digitalocean/e5-large-v2":{input:.02,output:0},"digitalocean/anthropic-claude-opus-4.5":{input:5,output:25,cache_read:.5,cache_write:6.25},"digitalocean/deepseek-v4-pro":{input:1.74,output:3.48,cache_read:.348},"digitalocean/gemma-4-31B-it":{input:.18,output:.5,cache_read:.036},"digitalocean/openai-gpt-5.6-terra":{input:2,output:12,cache_read:.2,tiers:[{input:4,output:18,cache_read:.4,tier:{type:"context",size:272e3}}],context_over_200k:{input:4,output:18,cache_read:.4}},"digitalocean/glm-5.3":{input:1.4,output:4.4,cache_read:.26},"digitalocean/gte-large-en-v1.5":{input:.09,output:0},"digitalocean/anthropic-claude-fable-5":{input:10,output:50,cache_read:1,cache_write:12.5},"digitalocean/openai-gpt-oss-20b":{input:.05,output:.45},"digitalocean/openai-gpt-5.4":{input:2.5,output:15,cache_read:.25,tiers:[{input:5,output:22.5,cache_read:.5,tier:{type:"context",size:272e3}}],context_over_200k:{input:5,output:22.5,cache_read:.5}},"digitalocean/mistral-nemo-instruct-2407":{input:.3,output:.3},"digitalocean/anthropic-claude-sonnet-4":{input:3,output:15,cache_read:.3,cache_write:3.75,tiers:[{input:6,output:22.5,cache_read:.3,cache_write:3.75,tier:{type:"context",size:2e5}}],context_over_200k:{input:6,output:22.5,cache_read:.3,cache_write:3.75}},"aixy/openai/gpt-4.1-mini":{input:.4,output:1.6,cache_read:.1},"alibaba-cn/qwen-flash":{input:.022,output:.216},"alibaba-cn/qwen3.5-flash":{input:.029,output:.287,reasoning:.287,tiers:[{input:.115,output:1.147,reasoning:1.147,tier:{type:"context",size:128e3}},{input:.172,output:1.72,reasoning:1.72,tier:{type:"context",size:256e3}}]},"alibaba-cn/qwen2-5-coder-32b-instruct":{input:.287,output:.861},"alibaba-cn/deepseek-v3-2-exp":{input:.287,output:.431},"alibaba-cn/deepseek-r1-distill-qwen-14b":{input:.144,output:.431},"alibaba-cn/qwen-math-plus":{input:.574,output:1.721},"alibaba-cn/qwen-deep-research":{input:7.742,output:23.367},"alibaba-cn/qwen3.7-max":{input:2.5,output:7.5,cache_read:.5,cache_write:3.125},"alibaba-cn/qwen2-5-32b-instruct":{input:.287,output:.861},"alibaba-cn/qwq-plus":{input:.23,output:.574},"alibaba-cn/qwq-32b":{input:.287,output:.861},"alibaba-cn/qwen2-5-vl-72b-instruct":{input:2.294,output:6.881},"alibaba-cn/deepseek-v3-1":{input:.574,output:1.721},"alibaba-cn/qwen3-vl-plus":{input:.143353,output:1.433525,reasoning:4.300576},"alibaba-cn/qwen-plus-character":{input:.115,output:.287},"alibaba-cn/qwen-max":{input:.345,output:1.377},"alibaba-cn/qwen3-next-80b-a3b-thinking":{input:.144,output:1.434},"alibaba-cn/qwen3.8-max":{input:1.77744,output:5.33231,cache_read:.22218,cache_write:2.22179},"alibaba-cn/kimi-k3":{input:2.827,output:14.133,cache_read:.283},"alibaba-cn/qwen2-5-math-7b-instruct":{input:.144,output:.287},"alibaba-cn/qwen3.5-plus":{input:.115,output:.688,reasoning:.688,tiers:[{input:.287,output:1.72,reasoning:1.72,tier:{type:"context",size:128e3}},{input:.573,output:3.44,reasoning:3.44,tier:{type:"context",size:256e3}}]},"alibaba-cn/qwen2-5-72b-instruct":{input:.574,output:1.721},"alibaba-cn/glm-5":{input:.573,output:2.58,tiers:[{input:.86,output:3.154,tier:{type:"context",size:32e3}}]},"alibaba-cn/deepseek-v4.1-flash":{input:.29754,output:1.19015,cache_read:.01488},"alibaba-cn/qwen3-32b":{input:.287,output:1.147,reasoning:2.868},"alibaba-cn/qwen2-5-coder-7b-instruct":{input:.144,output:.287},"alibaba-cn/qwen-plus":{input:.115,output:.287,reasoning:1.147,cache_read:.012,cache_write:.144},"alibaba-cn/qwen3.7-flash":{input:.02962,output:.1185,cache_read:.002962,cache_write:.03703,tiers:[{input:.08887,output:.35549,cache_read:.008887,cache_write:.11109,tier:{type:"context",size:32e3}},{input:.17774,output:.71098,cache_read:.017774,cache_write:.22218,tier:{type:"context",size:256e3}}]},"alibaba-cn/kimi-k2.6":{input:.929,output:3.858},"alibaba-cn/qwen3-max":{input:.359,output:1.434,reasoning:1.434,tiers:[{input:.574,output:2.294,reasoning:2.294,tier:{type:"context",size:32e3}},{input:1.004,output:4.014,reasoning:4.014,tier:{type:"context",size:128e3}}]},"alibaba-cn/qwen-omni-turbo-realtime":{input:.23,output:.918,input_audio:3.584,output_audio:7.168},"alibaba-cn/deepseek-v3":{input:.287,output:1.147},"alibaba-cn/deepseek-r1-distill-llama-70b":{input:.287,output:.861},"alibaba-cn/qwen3-coder-480b-a35b-instruct":{input:.861,output:3.441,tiers:[{input:1.291,output:5.161,tier:{type:"context",size:32e3}},{input:2.151,output:8.602,tier:{type:"context",size:128e3}}]},"alibaba-cn/qwen-turbo":{input:.044,output:.087,reasoning:.431},"alibaba-cn/deepseek-r1-distill-qwen-7b":{input:.072,output:.144},"alibaba-cn/qwen2-5-math-72b-instruct":{input:.574,output:1.721},"alibaba-cn/qwen3-coder-30b-a3b-instruct":{input:.216,output:.861,tiers:[{input:.323,output:1.291,tier:{type:"context",size:32e3}},{input:.538,output:2.151,tier:{type:"context",size:128e3}}]},"alibaba-cn/qwen-doc-turbo":{input:.087,output:.144},"alibaba-cn/kimi-k2-thinking":{input:.574,output:2.294},"alibaba-cn/qvq-max":{input:1.147,output:4.588},"alibaba-cn/qwen2-5-7b-instruct":{input:.072,output:.144},"alibaba-cn/qwen3-omni-flash":{input:.058,output:.23,input_audio:3.584,output_audio:7.168},"alibaba-cn/qwen-vl-max":{input:.23,output:.574},"alibaba-cn/qwen3-235b-a22b":{input:.287,output:1.147,reasoning:2.868},"alibaba-cn/qwen3-vl-30b-a3b":{input:.108,output:.431,reasoning:1.076},"alibaba-cn/kimi-k2.5":{input:.574,output:2.411},"alibaba-cn/qwen3-next-80b-a3b-instruct":{input:.144,output:.574},"alibaba-cn/qwen-vl-plus":{input:.115,output:.287},"alibaba-cn/qwen3.6-flash":{input:.1875,output:1.125,cache_write:.234375},"alibaba-cn/qwen3-coder-flash":{input:.144,output:.574},"alibaba-cn/qwen2-5-omni-7b":{input:.087,output:.345,input_audio:5.448},"alibaba-cn/qwen-mt-plus":{input:.259,output:.775},"alibaba-cn/tongyi-intent-detect-v3":{input:.058,output:.144},"alibaba-cn/qwen3-vl-235b-a22b":{input:.286705,output:1.14682,reasoning:2.867051},"alibaba-cn/qwen3-coder-plus":{input:.574,output:2.296,tiers:[{input:.861,output:3.444,tier:{type:"context",size:32e3}},{input:1.435,output:5.74,tier:{type:"context",size:128e3}},{input:2.87,output:28.7,tier:{type:"context",size:256e3}}]},"alibaba-cn/moonshot-kimi-k2-instruct":{input:.574,output:2.294},"alibaba-cn/MiniMax-M2.5":{input:.3,output:1.2},"alibaba-cn/qwen2-5-14b-instruct":{input:.144,output:.431},"alibaba-cn/qwen3.8-flash":{input:.11875,output:.40073,cache_read:.01187,cache_write:.14844},"alibaba-cn/qwen2-5-vl-7b-instruct":{input:.287,output:.717},"alibaba-cn/qwen-math-turbo":{input:.287,output:.861},"alibaba-cn/qwen-long":{input:.072,output:.287},"alibaba-cn/qwen3.6-max-preview":{input:1.32,output:7.9,cache_read:.132},"alibaba-cn/qwen-mt-turbo":{input:.101,output:.28},"alibaba-cn/qwen3.5-397b-a17b":{input:.172,output:1.032,reasoning:1.032,tiers:[{input:.43,output:2.58,reasoning:2.58,tier:{type:"context",size:128e3}}]},"alibaba-cn/qwen3-8b":{input:.072,output:.287,reasoning:.717},"alibaba-cn/glm-5.2":{input:1.1,output:3.851,cache_read:.275,cache_write:0},"alibaba-cn/qwen-omni-turbo":{input:.058,output:.23,input_audio:3.584,output_audio:7.168},"alibaba-cn/glm-5.1":{input:.825,output:3.301,cache_read:.17,tiers:[{input:1.1,output:3.851,tier:{type:"context",size:32e3}}]},"alibaba-cn/qwen3-omni-flash-realtime":{input:.23,output:.918,input_audio:3.584,output_audio:7.168},"alibaba-cn/qwen3-asr-flash":{input:.032,output:.032},"alibaba-cn/deepseek-r1-distill-qwen-32b":{input:.287,output:.861},"alibaba-cn/deepseek-r1":{input:.574,output:2.294},"alibaba-cn/deepseek-v4-pro":{input:.435,output:.87,cache_read:.003625},"alibaba-cn/deepseek-r1-0528":{input:.574,output:2.294},"alibaba-cn/qwen3.6-plus":{input:.5,output:3,cache_read:.05,cache_write:.625,tiers:[{input:2,output:6,cache_read:.2,cache_write:2.5,tier:{type:"context",size:256e3}}],context_over_200k:{input:2,output:6,cache_read:.2,cache_write:2.5}},"alibaba-cn/qwen3-14b":{input:.144,output:.574,reasoning:1.434},"alibaba-cn/glm-5.3":{input:1.1,output:3.851,cache_read:.275,cache_write:0},"alibaba-cn/qwen3.7-plus":{input:.5,output:3,cache_read:.05,cache_write:.625,tiers:[{input:2,output:6,cache_read:.2,cache_write:2.5,tier:{type:"context",size:128e3}}]},"alibaba-cn/deepseek-v4-flash":{input:.14,output:.28,cache_read:.0028},"alibaba-cn/qwen-vl-ocr":{input:.043,output:.072},"alibaba-cn/siliconflow/deepseek-v3-0324":{input:.25,output:1},"alibaba-cn/siliconflow/deepseek-v3.1-terminus":{input:.27,output:1},"alibaba-cn/siliconflow/deepseek-r1-0528":{input:.5,output:2.18},"alibaba-cn/siliconflow/deepseek-v3.2":{input:.27,output:.42},"alibaba-cn/kimi/kimi-k2.5":{input:.6,output:3,cache_read:.1},"alibaba-cn/MiniMax/MiniMax-M2.7":{input:.3,output:1.2,cache_read:.06,cache_write:.375}}};var CACHE_FILE=path20.join(cacheDir(),"models-dev.json");var TTL_MS=24*60*60*1e3;var cache=null;var costCache=null;var snapshotReg=null;var snapshotCosts=null;var snapshotMs=0;function bundledSnapshotRegistry(){if(snapshotReg)return snapshotReg;const snap=registry_snapshot_default;if(!snap||typeof snap!=="object"||!snap.models||typeof snap.models!=="object")return null;snapshotReg=snap.models;snapshotCosts=sanitizeCosts(snap.costs);const ts3=typeof snap.fetchedAt==="string"?Date.parse(snap.fetchedAt):NaN;snapshotMs=Number.isFinite(ts3)?ts3:0;return snapshotReg}{const seed=bundledSnapshotRegistry();if(seed&&!cache){cache=seed;costCache=snapshotCosts}}function sanitizeCosts(raw){if(!raw||typeof raw!=="object"||Array.isArray(raw))return null;const out={};let any=false;for(const[key,value]of Object.entries(raw)){if(!value||typeof value!=="object"||Array.isArray(value))continue;const input=value.input;if(typeof input!=="number"||!Number.isFinite(input)||input<=0)continue;out[key]=value;any=true}return any?out:null}init_logger();function parseLauncherModelWindows(raw){if(!raw)return{};try{const parsed=JSON.parse(raw);if(!parsed||typeof parsed!=="object"||Array.isArray(parsed))return{};const out={};for(const[id,v3]of Object.entries(parsed)){if(typeof v3==="number"&&Number.isFinite(v3)&&v3>0)out[id]=Math.floor(v3)}return out}catch{return{}}}var LAUNCHER_MODEL_WINDOWS=parseLauncherModelWindows(process.env.BILI_LAUNCHER_MODEL_WINDOWS);function parseLauncherModelMaxOutputs(raw){if(!raw)return{};try{const parsed=JSON.parse(raw);if(!parsed||typeof parsed!=="object"||Array.isArray(parsed))return{};const out={};for(const[id,v3]of Object.entries(parsed)){if(typeof v3==="number"&&Number.isFinite(v3)&&v3>0)out[id]=Math.floor(v3)}return out}catch{return{}}}var LAUNCHER_MODEL_MAX_OUTPUTS=parseLauncherModelMaxOutputs(process.env.BILI_LAUNCHER_MODEL_MAX_OUTPUTS);init_logger();import{createHash as createHash12}from"crypto";import{createHash as createHash11,randomUUID as randomUUID3}from"crypto";import{closeSync,existsSync as existsSync5,fsyncSync,mkdirSync as mkdirSync5,openSync,readdirSync,readFileSync as readFileSync6,renameSync as renameSync2,rmSync,statSync as statSync4,writeFileSync as writeFileSync3}from"fs";import{readdir as readdir2,readFile as readFile4,rm as rm2}from"fs/promises";import*as path22 from"path";init_logger();init_logger();import{createHash as createHash5,randomBytes}from"crypto";import{existsSync as existsSync3,readFileSync as readFileSync4}from"fs";import{promises as fsp}from"fs";import{createRequire as createRequire2}from"module";import path21 from"path";import{gunzipSync}from"zlib";init_driver();var ENGINE_SPECS=Object.freeze([{version:"13.0.3",sha512Base64:"RbOBxmLBG8uvFUc15X9+9SFemKcQ0WBuISBVkpuiaUB2qblC8UWlHEjdVVoZ8AdhSwmoEgsiXKfopX0CQxaACQ==",minNodeMajor:22,minNapiVersion:10},{version:"12.9.0",sha512Base64:"wqUv4Gm3toFpHDQmaKD4QhZm3g1DjUBI0yzS4UBl6lElUmXFYdTQmmEDpAFa5o8FiFiymURypEnfVHzILKaxqQ==",minNodeMajor:20,prebuild:{sha512Base64ByAbi:Object.freeze({"115":Object.freeze({"linux-x64":"fNMKurhPKb0ki9mnZJK9PVazCiRugcdmauo5qGjqQjUGIrdaVWrb4nlLwU7IiyppcfLu8n/qUsQ5CEZ36uoGaw==","linux-arm64":"7q7wZe0+5LLQt2YUkocGb41B9TvEMLKIaNI+CiQUQQ2DFBO1RPr3ixj/Gtb+0noMYHjJrqtqKUMO1xMQXnE0iw==","linuxmusl-x64":"GCriICDKw7K5dNjAVo8xFpSJXcYXXBAK9RDoeuSUv6rB5IVRP96IwxeynTy4Xc21l1507Efz+I2yy6FW5gKQ/w==","linuxmusl-arm64":"2OWfVP1nklnuR8ZfCwozJcLB0ZpOTRHqAkDpsLonEF5uHZMBnOAzGtd5d+nuPU+KaS5czciU0tXZFhsCUw7dbg==","darwin-x64":"tW2Vb19+Bh+PLfcGVnrERhc9Mk50Vi8HciIc0nwIJXlPm21xzKL6uEQHMoyKIAxF+vNXxDsUoJyNRg/TgCXjkA==","darwin-arm64":"H6jehr7s1D/RSTRplCL++hneLTgpqVzgzjrX/NJCsf0OMBSKNGCd9kMYAZJjMlp0IetS39sG5PTG7AcLCTQKeg==","win32-x64":"r+BAeN980mQEdIwDcrNU3iJqzAryuOyfeICFfYHuHVclonTr2L0IlzsaGp2D50KNWUeLQrIhBCFuNoT2+iBDTw==","win32-arm64":"jMSa36VrAiLsWFtnwWX+FEs4JWIjHeduVITY44ZcHsqn7BzPcMljL8LdJ0tVVGssV8x9PuqgIqMD5gFmzcYh9w=="}),"127":Object.freeze({"linux-x64":"jpVKlRCjwmKDIfohRK4Zf/potrKjl2CuvKiWm2SOL1eY7pTRQrGBc1DSEr4OBulYHE6PTl59w7hoAlzNOefG3g==","linux-arm64":"ei++r3DQbhwXsP97PHYENHnNd3jrai5dy11SCDZqzmqEm6mjloT1qwrpglVJmW4TLliYBJ8U9bMG/6Y8nbDBCQ==","linuxmusl-x64":"eFglLYVSmdQo7ehLh30dOF4H9csX92XIn1oKB3TdtTZ+7TTh7cfViO7TQIC4NPt6Ufbl3cos9y6/pU8FNL1dQg==","linuxmusl-arm64":"e72bURjJ4SYseIMY7uW1IkubTqzuKzD6NIVP0InsD8+DJBnRwi8+yIEEcODIK4xsFKSO6tE8TLuvPmetXEk8aA==","darwin-x64":"GxXg+WENfyP9DGnvOSMnPge+kDkEZmU8cF7EFOoFSzAFhEwYOBvFB4VTTqhZ6G4y54I7ufkjgkOxZmafdSOXOw==","darwin-arm64":"V1mPpKKnv3AvfZb/++CSOx49tmUi4fba4vORsD8GTaJVwvKmveJ/uPqXaEVhYQgDkao5VLiWL6gN2wk9rQXfPw==","win32-x64":"7chlb4LP9ETESK6djkGxDq4aDTTByiG1VoUwadJk7JZFhfn2u7vblPCulZaM2C3Ju3jHowc8LBKKQZiH52Uc5g==","win32-arm64":"0mD1nLGHG066cUFdIgMTEJfhbIeOgD52+dE0r8LAALarhU5JD0uyKPvpQH/V3rBjvwTOtaQtYqeEFgRj5NUL/g=="})})}}]);var COOLDOWN_MS=6*60*60*1e3;var PINNED_DIR_PREFIXES=ENGINE_SPECS.map(s3=>`better-sqlite3-${s3.version}`);init_logger();init_store();init_store();init_store();import{createHash as createHash7}from"crypto";function freshState(){return{requested:null,encryptionBlocked:false,persistDisabled:false,sidecar:null,sidecarOpenError:null,bootstrap:null}}var state=freshState();init_version();import{createCipheriv,createDecipheriv,randomBytes as randomBytes2}from"crypto";import*as zlib from"zlib";var ENCRYPT_MAGIC=Buffer.from("BILIENC1","utf8");var ZSTD_MAGIC=Buffer.from("BILIZSTD1","utf8");var NONCE_LEN=12;var TAG_LEN=16;var ENCRYPT_HEADER_LEN=ENCRYPT_MAGIC.length+2+NONCE_LEN;var MIN_ENCRYPTED_LEN=ENCRYPT_HEADER_LEN+TAG_LEN;var PLAIN_HEADER_LEN=ZSTD_MAGIC.length+2;init_logger();init_store();import{createHash as createHash10,randomUUID as randomUUID2}from"crypto";init_logger();import{createHash as createHash9}from"crypto";import{createHash as createHash8}from"crypto";var BOOT_ID=randomUUID2();var SEAM_BODY_CAP=512*1024;var BODY_FULL_CAP=8*1024*1024;var LEARNED_IMAGE_COST_TTL_MS=24*60*60*1e3;var{join:join3}=path22;init_version();import*as path23 from"path";init_logger();var MAX_SESSIONS=maxSessions();var MAX_RESIDENT_BYTES=sessionResidentMaxBytes();var SPLIT_CANARY_FRESH_MS=10*60*1e3;import{randomUUID as randomUUID4}from"crypto";var CODEX_FORGED_HANDOFF_HEADER="[bili] context summary after compaction:";var FORGED_SUMMARY_HEADER="[Compressed conversation section]";import fs13 from"fs";import path24 from"path";var SCAN_CACHE_TTL_MS=5*60*1e3;var CONFLICT_ACTIVE_WINDOW_MS=7*24*60*60*1e3;var LAUNCHER_DEFAULT_HOST="127.0.0.1";var HEALTH_PATH="/__bili/health";var HEALTH_POLL_INTERVAL_MS=200;var SPAWN_WAIT_MS=2e4;var SLOW_START_GRACE_MS=4e4;var SPAWN_BUDGET_MS=SPAWN_WAIT_MS+SLOW_START_GRACE_MS;var PROBE_TIMEOUT_MS=1500;var STARTING_MARKER_TTL_MS=SPAWN_BUDGET_MS+3e4;var POST_EXIT_REDISCOVERY_MS=3e3;var DEFAULT_MITM_DOMAIN_SET=new Set(DEFAULT_MITM_DOMAINS.map(d2=>d2.toLowerCase()));function proxyOrigin(host,port){return`http://${host}:${port}`}function healthUrl(origin){return origin+HEALTH_PATH}async function defaultFetch(url){const ctrl=new AbortController;const t=setTimeout(()=>ctrl.abort(),PROBE_TIMEOUT_MS);try{const res=await fetch(url,{signal:ctrl.signal});return{ok:res.ok}}catch{return{ok:false}}finally{clearTimeout(t)}}async function probeHealth(origin,fetchImpl){try{const{ok}=await fetchImpl(healthUrl(origin));return ok}catch{return false}}function describeProbeFailure(err){const e=err;const code=e?.cause?.code??e?.code;if(typeof code==="string"&&code.length>0)return code;if(e?.name==="TimeoutError"||e?.name==="AbortError")return`timeout after ${PROBE_TIMEOUT_MS}ms`;if(typeof e?.message==="string"&&e.message.length>0)return e.message.slice(0,160);return String(err)}async function defaultFetchDetail(url){const ctrl=new AbortController;const t=setTimeout(()=>ctrl.abort(),PROBE_TIMEOUT_MS);try{const res=await fetch(url,{signal:ctrl.signal});return res.ok?{ok:true}:{ok:false,detail:`HTTP ${res.status}`}}catch(err){return{ok:false,detail:describeProbeFailure(err)}}finally{clearTimeout(t)}}async function fetchHealthInfoDefault(origin){try{const res=await fetch(healthUrl(origin),{signal:AbortSignal.timeout(PROBE_TIMEOUT_MS)});if(!res.ok)return void 0;const data=await res.json();const info={ok:Boolean(data.ok),instanceId:typeof data.instanceId==="string"?data.instanceId:void 0};if(typeof data.version==="string")info.version=data.version;if(typeof data.pid==="number")info.pid=data.pid;if(data.watchdog&&typeof data.watchdog==="object"&&typeof data.watchdog.armed==="boolean"){const wd=data.watchdog;const watchers=Array.isArray(wd.watchers)?wd.watchers.filter(w3=>typeof w3==="number"):void 0;info.watchdog={armed:wd.armed,watchers}}return info}catch{return void 0}}async function registerWatcherDefault(origin,pid){try{const res=await fetch(`${origin}/__bili/watcher`,{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({pid}),signal:AbortSignal.timeout(2e3)});if(!res.ok){if(res.status===409)return"refused";console.error(`bili: watcher registration returned HTTP ${res.status} \u2014 the shared proxy may exit when its first owner does`);return"failed"}return"ok"}catch(err){console.error(`bili: watcher registration failed \u2014 the shared proxy may exit when its first owner does (${err instanceof Error?err.message:String(err)})`);return"failed"}}function isStartingMarkerActive(marker,nowMs){return isPidAlive(marker.pid)&&nowMs-marker.startedAt<STARTING_MARKER_TTL_MS}function recordedModelMap(passed,ambientRaw,parse3){return parse3(passed&&Object.keys(passed).length>0?JSON.stringify(passed):ambientRaw)}function instanceShapeMismatch(inst,opts,foreignLanes=[]){if(opts.lane!==void 0&&inst.lane!==void 0&&inst.lane!==opts.lane&&!foreignLanes.includes(inst.lane))return"lane-mismatch";if(inst.host!==opts.host||inst.passthrough!==opts.passthrough)return"host-or-passthrough-mismatch";const wantDomains=resolveRecordedMitmDomains(opts.mitmDomains);if(inst.mitmDomains.length!==wantDomains.length||inst.mitmDomains.some((d2,i)=>d2!==wantDomains[i]))return"mitm-domains-mismatch";const wantWindows=recordedModelMap(opts.modelWindows,process.env.BILI_LAUNCHER_MODEL_WINDOWS,parseLauncherModelWindows);if(Object.keys(inst.modelWindows).length!==Object.keys(wantWindows).length)return"model-windows-mismatch";if(!Object.keys(wantWindows).every(k2=>inst.modelWindows[k2]===wantWindows[k2]))return"model-windows-mismatch";const wantMax=recordedModelMap(opts.modelMaxOutputs,process.env.BILI_LAUNCHER_MODEL_MAX_OUTPUTS,parseLauncherModelMaxOutputs);if(Object.keys(inst.modelMaxOutputs??{}).length!==Object.keys(wantMax).length)return"model-max-outputs-mismatch";return Object.keys(wantMax).every(k2=>(inst.modelMaxOutputs??{})[k2]===wantMax[k2])?void 0:"model-max-outputs-mismatch"}function instanceCompatible(inst,opts,codeFingerprint,foreignLanes=[]){if(inst.codeFingerprint===void 0||inst.codeFingerprint!==codeFingerprint)return"code-fingerprint-mismatch";return instanceShapeMismatch(inst,opts,foreignLanes)}async function probeLiveInstances(readInstance,fetchHealthInfo,diag,isConnectable=tcpConnectable){const seen=new Map;const inst=readInstance();if(isProxyInstanceFile(inst))seen.set(inst.instanceId||inst.origin,inst);for(const live of discoverLiveInstances())seen.set(live.instanceId||live.origin,live);const checked=await Promise.all([...seen.values()].map(async c=>{if(!isPidAlive(c.pid)){diag?.(`native-attach: drop ${c.origin} (pid ${c.pid}): owner process gone`);return void 0}const health=await fetchHealthInfo(c.origin);if(!health||!health.ok){const busy=await isConnectable(c.origin);diag?.(busy?`native-attach: drop ${c.origin} (pid ${c.pid}): health probe failed but TCP connect succeeded \u2014 instance is BUSY (event loop saturated), not dead (#3654)`:`native-attach: drop ${c.origin} (pid ${c.pid}): health probe failed`);return void 0}if(health.instanceId!==void 0&&health.instanceId!==c.instanceId){diag?.(`native-attach: drop ${c.origin} (pid ${c.pid}): instance id mismatch (${c.instanceId} vs ${health.instanceId})`);return void 0}return{inst:c,health}}));return checked.filter(c=>c!==void 0)}function attachGateAllows(health,attachExternal){if(attachExternal)return true;return health.watchdog?.armed===true}function isUserZoneInstance(inst){return inst.lane===void 0&&inst.launchToken===void 0}function gateRefusalMessage(inst,health){const reason=health.watchdog&&health.watchdog.armed===false?"it reports NO session-lifecycle watchdog (started without BILI_PARENT_PID, e.g. manual `bili start`)":"it does not report watchdog state (older bili build) \u2014 its lifecycle is unverifiable";return`bili: refusing to attach to ${inst.origin} (pid ${inst.pid}) \u2014 ${reason}. It would outlive this session and ignore config edits until killed (#1322/#1335). Starting a session-owned proxy instead; set native.attachExternal=true or BILI_NATIVE_ATTACH_EXTERNAL=1 to attach anyway.`}function attachClass(inst,lane,foreignLanes){if(lane===void 0)return 1;if(inst.lane===lane)return 0;if(inst.lane!==void 0)return 1+foreignLanes.indexOf(inst.lane);return foreignLanes.length+1}function normalizeOrigin(o){return o.trim().replace(/\/+$/,"").toLowerCase()}function pickAttachable(candidates,opts,codeFingerprint,attachExternal,attachPolicy,attachUrl,refusedLog,diag,foreignLanes=[]){let best;let bestClass=Number.MAX_SAFE_INTEGER;let bestStartedAt=Number.NEGATIVE_INFINITY;for(const c of candidates){if(attachUrl&&normalizeOrigin(c.inst.origin)!==normalizeOrigin(attachUrl)){diag?.(`native-attach: skip ${c.inst.origin} (pid ${c.inst.pid}): not the explicit attachUrl target`);continue}const incompatible=instanceCompatible(c.inst,opts,codeFingerprint,foreignLanes);if(incompatible!==void 0){diag?.(`native-attach: skip ${c.inst.origin} (pid ${c.inst.pid}): incompatible (${incompatible})`);continue}if(opts.strictPort&&c.inst.port!==opts.port){diag?.(`native-attach: skip ${c.inst.origin} (pid ${c.inst.pid}): port mismatch`);continue}const sameLane=opts.lane!==void 0&&c.inst.lane===opts.lane;if(!attachUrl&&!attachExternal&&attachPolicy==="own-lane"&&opts.lane!==void 0&&!sameLane&&c.health.watchdog?.armed!==true){diag?.(`native-attach: skip ${c.inst.origin} (pid ${c.inst.pid}): not own lane and not an armed shared daemon (attachPolicy=own-lane)`);continue}if(!attachGateAllows(c.health,attachExternal)&&!isUserZoneInstance(c.inst)){if(!refusedLog.has(c.inst.origin)){refusedLog.add(c.inst.origin);console.error(gateRefusalMessage(c.inst,c.health));diag?.(gateRefusalMessage(c.inst,c.health))}continue}const cls=attachClass(c.inst,opts.lane,foreignLanes);if(cls<bestClass||cls===bestClass&&c.inst.startedAt>bestStartedAt){best=c.inst;bestClass=cls;bestStartedAt=c.inst.startedAt}}return best}async function waitForStarterInstance(readInstance,fetchHealthInfo,now,sleepImpl,opts,codeFingerprint,attachExternal,attachPolicy,attachUrl,refusedLog,diag,foreignLanes=[]){const deadline=now()+SPAWN_BUDGET_MS;const probe=async()=>pickAttachable(await probeLiveInstances(readInstance,fetchHealthInfo,diag),opts,codeFingerprint,attachExternal,attachPolicy,attachUrl,refusedLog,diag,foreignLanes);let inst;while(now()<deadline){await sleepImpl(HEALTH_POLL_INTERVAL_MS);inst=await probe();if(inst)break;const still=readStartingMarker();if(!still||!isStartingMarkerActive(still,now()))break}return inst??await probe()}function defaultAttachDiag(debug2){return msg=>{logHostEvent("info","",msg);if(debug2)process.stderr.write(`${new Date().toISOString()} [info] [v=${VERSION}] ${msg}
|
|
130
|
-
`)}}function pickEphemeralPort(host=LAUNCHER_DEFAULT_HOST){return new Promise((resolve,reject)=>{const srv=net3.createServer();srv.once("error",reject);srv.listen(0,host,()=>{const addr=srv.address();srv.close(()=>{if(addr&&typeof addr==="object")resolve(addr.port);else reject(new Error("could not allocate a free port"))})})})}var INHERITED_PROXY_VARS=["http_proxy","https_proxy","all_proxy","HTTP_PROXY","HTTPS_PROXY","ALL_PROXY","no_proxy","NO_PROXY"];var INTERNAL_LAUNCHER_CHANNEL_VARS=["BILI_LAUNCHER_LANE","BILI_LAUNCHER_MODEL_WINDOWS","BILI_LAUNCHER_MODEL_MAX_OUTPUTS","BILI_STRICT_PORT"];function stripInternalLauncherChannels(env){const cleaned={...env};for(const key of INTERNAL_LAUNCHER_CHANNEL_VARS)delete cleaned[key];return cleaned}function stripInheritedProxy(env){const cleaned={...env};for(const key of INHERITED_PROXY_VARS)delete cleaned[key];return stripInternalLauncherChannels(cleaned)}function captureInheritedProxyEnv(env){const captured={};const pairs=[["BILI_INHERITED_HTTP_PROXY",env.HTTP_PROXY,env.http_proxy],["BILI_INHERITED_HTTPS_PROXY",env.HTTPS_PROXY,env.https_proxy],["BILI_INHERITED_ALL_PROXY",env.ALL_PROXY,env.all_proxy],["BILI_INHERITED_NO_PROXY",env.NO_PROXY,env.no_proxy]];for(const[name,upper,lower]of pairs){const value=(upper??lower??"").trim();if(value)captured[name]=value}return captured}function proxyStartArgs(opts){const args=["start","--host",opts.host,"--port",String(opts.port)];if(opts.passthrough)args.push("--passthrough");if(opts.debug)args.push("--debug");return args}function probeNodeWrapperTarget(candidate,env){try{const out=execFileSync5(candidate,["-p","process.execPath"],{windowsHide:true,timeout:5e3,encoding:"utf8",stdio:["ignore","pipe","pipe"],env});const p2=out.trim();return p2.length>0?p2:void 0}catch{return void 0}}function probeNodeMajor(candidate,env){try{const out=execFileSync5(candidate,["--version"],{windowsHide:true,timeout:5e3,encoding:"utf8",stdio:["ignore","pipe","pipe"],env});const m3=/^v(\d+)\.\d+\.\d+/.exec(out.trim());return m3?Number(m3[1]):void 0}catch{return void 0}}var MIN_PROXY_NODE_MAJOR=20;function looksLikeNodeExecutable(p2,platform){if(platform==="win32"){if(!/^[a-zA-Z]:[\\/]/.test(p2))return false}else if(!p2.startsWith("/")){return false}const base=p2.split(/[\\/]/).pop()?.toLowerCase()??"";return base==="node"||base==="node.exe"}function resolveNodeRuntime(execPath=process.execPath,env=process.env,platform=process.platform,existsImpl=fs14.existsSync,electronVersion=typeof process.versions.electron==="string"?process.versions.electron:void 0,probeWrapper=probeNodeWrapperTarget,probeNode=probeNodeMajor){const base=path25.basename(execPath).toLowerCase();if(base==="node"||base==="node.exe")return execPath;const override=typeof env.BILLION_CONTEXT_NODE==="string"?env.BILLION_CONTEXT_NODE.trim():"";if(override.length>0&&existsImpl(override))return override;const resolveDiscovered=candidate=>{let subject=candidate;if(platform==="win32"){const probed=probeWrapper(candidate,env);const target=probed?.trim();if(target&&target.length>0&&looksLikeNodeExecutable(target,platform)&&existsImpl(target)){if(target.toLowerCase()!==candidate.toLowerCase()){log("info",`bili: ${candidate} is a Windows node wrapper resolving to ${target} \u2014 spawning the real Node directly (#1887)`);subject=target}}}const major=probeNode(subject,env);if(major===void 0||major<MIN_PROXY_NODE_MAJOR)return void 0;return subject};const sep=platform==="win32"?";":":";const names=platform==="win32"?["node.exe"]:["node"];const home=platform==="win32"?env.USERPROFILE??"":env.HOME??"";const voltaHome=platform==="win32"?env.VOLTA_HOME??(home?home+"/Tools/volta":""):home?home+"/.volta":"";const extraDirs=platform==="win32"?["C:/Program Files/nodejs",env.LOCALAPPDATA?env.LOCALAPPDATA+"/Programs/nodejs":"",voltaHome?voltaHome+"/bin":""]:["/usr/local/bin","/opt/homebrew/bin","/opt/local/bin",voltaHome?voltaHome+"/bin":"",home?home+"/.local/bin":""];for(const dir of[...(env.PATH??"").split(sep),...extraDirs]){if(!dir)continue;for(const name of names){const candidate=dir.endsWith("/")||dir.endsWith("\\")?dir+name:dir+"/"+name;if(!existsImpl(candidate))continue;const resolved=resolveDiscovered(candidate);if(resolved!==void 0)return resolved;log("warn",`bili: skipping ${candidate} \u2014 not a usable Node runtime (--version did not report v${MIN_PROXY_NODE_MAJOR}+; set BILLION_CONTEXT_NODE if this is wrong, #3383)`)}}if(electronVersion&&electronVersion.length>0){log("warn",`bili: no usable Node runtime found on PATH or install dirs \u2014 falling back to the Electron host binary ${execPath} run as Node via ELECTRON_RUN_AS_NODE=1 (#1429/#3383)`);return execPath}throw new Error("bili: cannot find a Node runtime to spawn the proxy (this process is not Node) \u2014 set BILLION_CONTEXT_NODE")}var PORT_LOG_MAX_BYTES=5*1024*1024;function rotatePortLogIfNeeded(logPath2){try{if(fs14.statSync(logPath2).size<PORT_LOG_MAX_BYTES)return;try{fs14.unlinkSync(`${logPath2}.old`)}catch{}fs14.renameSync(logPath2,`${logPath2}.old`)}catch{}}var STALE_ROTATION_WAIT_MS=12e3;var SHUTDOWN_REQUEST_TIMEOUT_MS=3e3;var OWNER_HEARTBEAT_INTERVAL_MS=5e3;var OWNER_HEARTBEAT_POST_TIMEOUT_MS=2e3;async function requestInstanceShutdown(origin){try{const res=await fetch(`${origin}/__bili/shutdown`,{method:"POST",headers:{"content-type":"application/json"},body:"{}",signal:AbortSignal.timeout(SHUTDOWN_REQUEST_TIMEOUT_MS)});return res.ok}catch{return false}}async function rotateStalePredecessor(probed,resolveTargetPort,opts,attachUrl,foreignLanes,fetchHealthInfo,now,sleep,requestShutdown){if(attachUrl!==void 0)return;const stale=probed.filter(c=>!isUserZoneInstance(c.inst)&&c.health.watchdog?.armed===true&&instanceShapeMismatch(c.inst,opts,foreignLanes)===void 0&&c.health.version!==void 0&&isVersionNewer(VERSION,c.health.version));if(stale.length===0)return;const targetPort=resolveTargetPort();if(targetPort===void 0)return;const candidate=stale.find(c=>c.inst.port===targetPort);if(!candidate)return;const running=candidate.health.version;if(running===void 0||!isVersionNewer(VERSION,running))return;console.error(`bili: rotating stale proxy ${candidate.inst.origin} (pid ${candidate.inst.pid}, running v${running}) \u2014 ours is v${VERSION}; requesting graceful shutdown before taking over port ${targetPort}`);const asked=await requestShutdown(candidate.inst.origin);if(!asked){console.error(`bili: stale rotation skipped \u2014 ${candidate.inst.origin} refused /__bili/shutdown (older build); falling back to the normal spawn ladder`);return}const deadline=now()+STALE_ROTATION_WAIT_MS;for(;;){const h=await fetchHealthInfo(candidate.inst.origin);if(!h?.ok)break;if(now()>=deadline){console.error(`bili: stale rotation timed out after ${STALE_ROTATION_WAIT_MS}ms \u2014 ${candidate.inst.origin} still answers healthy; falling back to the normal spawn ladder`);return}await sleep(HEALTH_POLL_INTERVAL_MS)}}function startOwnerHeartbeat(origin,pid,intervalMs=OWNER_HEARTBEAT_INTERVAL_MS,post=async body=>{await fetch(`${origin}/__bili/watcher`,{method:"POST",headers:{"content-type":"application/json"},body,signal:AbortSignal.timeout(OWNER_HEARTBEAT_POST_TIMEOUT_MS)})}){if(pid!==process.pid)return void 0;let stopped=false;const beat=async()=>{while(!stopped){await new Promise(r=>{const t=setTimeout(r,intervalMs);t.unref?.()});if(stopped)return;try{await post(JSON.stringify({pid,hb:true}))}catch{}}};void beat();return()=>{stopped=true}}async function ensureProxyRunning(opts,deps={}){const fetchImpl=deps.fetchImpl??defaultFetch;const fetchHealthInfo=deps.fetchHealthInfo??fetchHealthInfoDefault;const fetchDetail=deps.fetchDetailImpl??defaultFetchDetail;const readInstance=deps.readInstanceFile??readProxyInstanceFile;const listRegistry=deps.listRegistryInstances??discoverLiveInstances;const spawnImpl=deps.spawnImpl??spawn2;const now=deps.now??Date.now;const sleepImpl=deps.sleep??(ms2=>new Promise(r=>setTimeout(r,ms2)));const registerWatcher=deps.registerWatcher??registerWatcherDefault;const attachExternal=(deps.resolveAttachExternal??resolveNativeAttachExternal)();const foreignLanes=(deps.attachLanePriority??resolveNativeAttachLanePriority)();const attachPolicy=(deps.resolveAttachPolicy??resolveNativeAttachPolicy)();const attachUrl=(deps.resolveAttachUrl??resolveNativeAttachUrl)();const refusedLog=new Set;const attachDiag=deps.attachDiag??defaultAttachDiag(opts.debug);const watchPid=opts.parentPid??process.pid;const attachTo=async inst=>{attachDiag(`bili: attaching to running proxy at ${inst.origin} (pid ${inst.pid})`);const reg=await registerWatcher(inst.origin,watchPid);startOwnerHeartbeat(inst.origin,watchPid);const handle={origin:inst.origin,port:inst.port,attached:true};if(reg==="refused")handle.refusedWatcher=true;return handle};const script=deps.scriptPath??process.argv[1];const codeFingerprint=entryScriptFingerprint(script);const probed=await probeLiveInstances(readInstance,fetchHealthInfo,attachDiag);const existing=pickAttachable(probed,opts,codeFingerprint,attachExternal,attachPolicy,attachUrl,refusedLog,attachDiag,foreignLanes);if(existing){return attachTo(existing)}{await rotateStalePredecessor(probed,()=>{const rotLane=opts.lane!==void 0&&opts.port<=0?opts.lane:void 0;return opts.port>0?opts.port:rotLane!==void 0?(deps?.zonePreferredPort??lanePreferredPort)(rotLane):void 0},opts,attachUrl,foreignLanes,fetchHealthInfo,now,sleepImpl,deps?.requestInstanceShutdown??requestInstanceShutdown)}if(!attachExternal&&opts.strictPort){const squatter=probed.find(c=>c.inst.port===opts.port&&instanceCompatible(c.inst,opts,codeFingerprint,foreignLanes)===void 0);if(squatter){throw new Error(`bili: port ${opts.port} is held by a lifecycle-less bili proxy at ${squatter.inst.origin} (pid ${squatter.inst.pid}) \u2014 the #1335 attach gate refuses it by default and this launch pins the port, so no session-owned proxy can bind it either. Kill that process (kill ${squatter.inst.pid}) or set native.attachExternal=true / BILI_NATIVE_ATTACH_EXTERNAL=1 to attach to it anyway.`)}}const waitForOtherStarter=async()=>{attachDiag("bili: another bili launch is bringing up a proxy \u2014 waiting for it instead of spawning a second");const waited=await waitForStarterInstance(readInstance,fetchHealthInfo,now,sleepImpl,opts,codeFingerprint,attachExternal,attachPolicy,attachUrl,refusedLog,attachDiag,foreignLanes);if(waited){return attachTo(waited)}return void 0};const starterLaneMatches=m3=>opts.lane===void 0||m3.lane===void 0||m3.lane===opts.lane;const marker=readStartingMarker();if(marker){if(!isStartingMarkerActive(marker,now())){removeStartingMarker()}else if(starterLaneMatches(marker)){const attached=await waitForOtherStarter();if(attached)return attached}}const launchToken=randomUUID5();const zoneLane=opts.lane!==void 0&&opts.port<=0?opts.lane:void 0;const preferredPort=deps?.zonePreferredPort??lanePreferredPort;const port=opts.port>0?opts.port:zoneLane!==void 0?preferredPort(zoneLane):await pickEphemeralPort(opts.host);const settleZonePort=settled=>{if(zoneLane!==void 0)(deps?.writeZonePort??writeZonePort)(zoneLane,settled)};if(!script)throw new Error("bili: cannot resolve launcher script path");const logPath2=path25.join(os8.tmpdir(),`bili-proxy-${port}.log`);rotatePortLogIfNeeded(logPath2);const logFd=fs14.openSync(logPath2,"a");const claimMarker=()=>claimStartingMarker({token:launchToken,pid:process.pid,host:opts.host,port,startedAt:now(),lane:opts.lane});let claimed=claimMarker();if(!claimed){const holder=readStartingMarker();if(holder&&isStartingMarkerActive(holder,now())){if(starterLaneMatches(holder)){const attached=await waitForOtherStarter();if(attached)return attached;claimed=claimMarker()}}else{removeStartingMarker();claimed=claimMarker()}}try{let child;const runtime=deps.nodeRuntime??resolveNodeRuntime();try{child=spawnImpl(runtime,[script,...proxyStartArgs({...opts,port})],{detached:true,windowsHide:true,stdio:["ignore",logFd,logFd],env:{...stripInheritedProxy(process.env),...captureInheritedProxyEnv(process.env),...process.versions.electron?{ELECTRON_RUN_AS_NODE:"1"}:{},BILI_LAUNCH_TOKEN:launchToken,BILI_PARENT_PID:String(opts.parentPid??process.pid),...opts.lane?{BILI_LAUNCHER_LANE:opts.lane}:{},...opts.mitmDomains&&opts.mitmDomains.length?{BILI_MITM_DOMAINS:opts.mitmDomains.join(",")}:{},...opts.modelWindows&&Object.keys(opts.modelWindows).length>0?{BILI_LAUNCHER_MODEL_WINDOWS:JSON.stringify(opts.modelWindows)}:{},...opts.modelMaxOutputs&&Object.keys(opts.modelMaxOutputs).length>0?{BILI_LAUNCHER_MODEL_MAX_OUTPUTS:JSON.stringify(opts.modelMaxOutputs)}:{},...opts.strictPort?{BILI_STRICT_PORT:"1"}:{}}})}finally{try{fs14.closeSync(logFd)}catch{}}try{child.unref?.()}catch{}let childExit;let childError;let squatterAnnounced=false;child.on?.("exit",(...rest)=>{childExit={code:typeof rest[0]==="number"?rest[0]:null,signal:typeof rest[1]==="string"?rest[1]:null}});child.on?.("error",(...rest)=>{childError=rest[0]});const logHeadSample=()=>{try{const fd=fs14.openSync(logPath2,"r");try{const buf=Buffer.alloc(256);const n=fs14.readSync(fd,buf,0,buf.length,0);if(n===0)return"";let s3=buf.subarray(0,n).toString("utf8").replace(/\s+/g," ").trim();if(s3.length>200)s3=`${s3.slice(0,200)}\u2026`;return` \u2014 child output head: "${s3}"`}finally{fs14.closeSync(fd)}}catch{return""}};const logTail=()=>{try{const size=fs14.statSync(logPath2).size;const rotated=fs14.existsSync(`${logPath2}.old`)?`; earlier output rotated to ${logPath2}.old`:"";return size===0?`, ${size} bytes \u2014 EMPTY, the child produced no output of its own${rotated}`:`, ${size} bytes${rotated}${logHeadSample()}`}catch{return""}};const diagnosePort=async childAlive=>{const origin=proxyOrigin(opts.host,port);let info;let det={ok:false,detail:"probe error"};try{const[i,d3]=await Promise.all([fetchHealthInfo(origin),fetchDetail(healthUrl(origin))]);info=i;det=d3}catch{}if(info?.ok){return info.pid===child.pid?`port ${port} finally answers healthy from our child (pid ${info.pid}) but its instance handshake never matched \u2014 check the instance-file/registry state dir`:`port ${port} is held by a different process${info.pid!==void 0?` (pid ${info.pid})`:""} \u2014 the spawned child never bound it`}if(det.ok){return`port ${port} answered but not with bili's health payload \u2014 a foreign service likely holds it`}const d2=det.detail??"unknown error";if(/^(ECONNREFUSED|ECONNRESET|EHOSTUNREACH|ENETUNREACH|EPIPE)$/i.test(d2)){return`nothing is listening on port ${port} \u2014 the spawned child (${childAlive?"still alive":"already exited"}, pid ${child.pid??"?"}) never bound it`}if(/^HTTP \d{3}$/.test(d2)){return`port ${port} answered ${d2} \u2014 the listener there is not reporting bili health`}if(/^timeout after \d+ms$/i.test(d2)&&await(deps.isConnectable??tcpConnectable)(origin)){return`port ${port} accepts TCP connections but never answers /__bili/health within the probe budget \u2014 the instance there is BUSY (event loop saturated, typically a large compression), not dead (#3654)`}return`last health probe failed with ${d2}`};const deadline=now()+SPAWN_BUDGET_MS;let slowStartNoticed=false;while(now()<deadline){if(childExit||childError!==void 0)break;if(!slowStartNoticed&&now()>=deadline-SLOW_START_GRACE_MS){slowStartNoticed=true;console.error(`bili: spawned proxy not healthy after ${SPAWN_WAIT_MS}ms \u2014 child pid ${child.pid??"?"} is still starting up; extending wait to ${SPAWN_BUDGET_MS}ms total (${await diagnosePort(true)}) (log: ${logPath2}${logTail()})`)}await sleepImpl(HEALTH_POLL_INTERVAL_MS);const inst=readInstance();if(isProxyInstanceFile(inst)&&inst.launchToken===launchToken){if(await probeHealth(inst.origin,fetchImpl)){settleZonePort(inst.port);startOwnerHeartbeat(inst.origin,watchPid);return{origin:inst.origin,port:inst.port,child,logPath:logPath2}}continue}if(child.pid!==void 0){const mine=listRegistry().find(e=>e.pid===child.pid);if(mine&&mine.origin!==""&&await probeHealth(mine.origin,fetchImpl)){settleZonePort(mine.port);startOwnerHeartbeat(mine.origin,watchPid);return{origin:mine.origin,port:mine.port,child,logPath:logPath2}}}const stale=!isProxyInstanceFile(inst)||!isPidAlive(inst.pid);if(stale){const preferredOrigin=proxyOrigin(opts.host,port);const info=await fetchHealthInfo(preferredOrigin);if(info?.ok&&child.pid!==void 0&&info.pid===child.pid){settleZonePort(port);startOwnerHeartbeat(preferredOrigin,watchPid);return{origin:preferredOrigin,port,child,logPath:logPath2}}if(info?.ok&&!squatterAnnounced){squatterAnnounced=true;attachDiag(`bili: port ${port} answers health${info.pid!==void 0?` (pid ${info.pid})`:""} but is not the proxy this launcher spawned (child pid ${child.pid??"?"}) \u2014 waiting for the spawned instance to report its real origin`)}}}const adoptServingTwin=async()=>{const candidates=(deps.listAdoptCandidates??discoverLiveInstances)().filter(inst=>isPidAlive(inst.pid)&&instanceCompatible(inst,opts,codeFingerprint,foreignLanes)===void 0).sort((a,b3)=>Number(b3.port===port)-Number(a.port===port)||b3.startedAt-a.startedAt);for(const inst of candidates){if(!await(deps.isConnectable??tcpConnectable)(inst.origin))continue;attachDiag(`bili: adopting serving twin ${inst.origin} (pid ${inst.pid}) \u2014 the spawned child lost the #3044 duplicate race to it; requests ride the existing instance (#3654)`);return attachTo(inst)}return void 0};const rediscoverAfterChildExit=async()=>{console.error(`bili: spawned proxy exited before becoming healthy \u2014 re-checking for a late-publishing listener on port ${port} before failing`);const rediscoveryDeadline=now()+POST_EXIT_REDISCOVERY_MS;while(now()<rediscoveryDeadline){await sleepImpl(HEALTH_POLL_INTERVAL_MS);const probedAgain=await probeLiveInstances(readInstance,fetchHealthInfo,attachDiag);const late=pickAttachable(probedAgain,opts,codeFingerprint,attachExternal,attachPolicy,attachUrl,refusedLog,attachDiag,foreignLanes);if(late){attachDiag(`bili: attached to ${late.origin} (pid ${late.pid}) \u2014 it published its instance record after the initial discovery`);return attachTo(late)}}return void 0};if(childError!==void 0){const detail=childError instanceof Error?childError.message:String(childError);throw new Error(`bili: proxy spawn failed (${detail}) (runtime: ${runtime}) (log: ${logPath2})`)}if(childExit){if(childExit.code===TWIN_ADOPT_EXIT_CODE){const adopted=await adoptServingTwin();if(adopted!==void 0)return adopted;attachDiag("bili: serving-twin adoption failed verification \u2014 continuing with the standard post-exit re-discovery")}const retried=await rediscoverAfterChildExit();if(retried)return retried;const detail=childExit.code!==null?`code ${childExit.code}${childExit.code===TWIN_ADOPT_EXIT_CODE?" (twin-collision signal)":""}`:childExit.signal?`signal ${childExit.signal}`:"unknown reason";throw new Error(`bili: proxy child exited before becoming healthy (${detail}) \u2014 ${await diagnosePort(false)} (runtime: ${runtime}) (log: ${logPath2}${logTail()})`)}const diagnosis=await diagnosePort(true);killAbandonedChild(child);console.error(`bili: killed spawned proxy (pid ${child.pid??"?"}) after ${SPAWN_BUDGET_MS}ms without health \u2014 ${diagnosis} (log: ${logPath2}${logTail()})`);throw new Error(`bili: proxy did not become healthy within ${SPAWN_BUDGET_MS}ms \u2014 ${diagnosis} (runtime: ${runtime}) (log: ${logPath2}${logTail()})`)}finally{if(claimed)clearStartingMarker(launchToken)}}function killAbandonedChild(child){if(!child||child.pid===void 0||child.pid<=0)return;if(process.platform!=="win32"){try{process.kill(-child.pid,"SIGKILL")}catch{}}else{try{spawnSync3("taskkill",["/F","/T","/PID",String(child.pid)],{windowsHide:true,stdio:"ignore"})}catch{}}try{child.kill?.("SIGKILL")}catch{}}var PATH_EXTS=process.platform==="win32"?[".cmd",".bat",".exe",""]:[""];import fs17 from"fs";import path30 from"path";import{fileURLToPath as fileURLToPath5}from"url";import{createHash as createHash15}from"crypto";import{createHash as createHash14}from"crypto";function hashId2(s3){return createHash14("sha256").update(s3,"utf8").digest("hex").slice(0,16)}var CANONICAL_IMAGE_TEXT="[image]";var CANONICAL_REDACTED_THINKING_TEXT="[redacted_thinking]";function canonicalToolArgs(argsText){const trimmed=argsText.trim();if(!trimmed.startsWith("{")&&!trimmed.startsWith("["))return argsText;try{return JSON.stringify(canonicalize2(JSON.parse(trimmed)))}catch{return argsText}}function canonicalize2(v3){if(Array.isArray(v3))return v3.map(canonicalize2);if(v3!==null&&typeof v3==="object"){const src=v3;const out={};for(const k2 of Object.keys(src).sort())out[k2]=canonicalize2(src[k2]);return out}return v3}var idSalt=null;function deriveCanonicalMessageId(role,contentType,text,options={}){const seed=`${idSalt?idSalt+"|":""}${role}|${contentType}||${options.toolName??""}|${text}`+(options.mediaFingerprint!==void 0?`|${options.mediaFingerprint}`:"");return"h_"+hashId2(seed)}function imageMediaFingerprint(base64OrUrl){return hashId2(base64OrUrl)}function canonicalOpaqueSeed(item){if(item===null||typeof item!=="object")return hashId2(String(item));const src=item;const out={};for(const k2 of Object.keys(src)){if(k2==="id"||k2==="status")continue;out[k2]=src[k2]}return hashId2(JSON.stringify(out))}var ClusterCounter=class{counts=new Map;next(baseId){const n=this.counts.get(baseId)??0;this.counts.set(baseId,n+1);return n===0?baseId:`${baseId}_${n}`}};function anthropicToCore(body){const msgs=[];const cacheControls=new Map;const clusters=new ClusterCounter;const toolNames=new Map;for(const[wireIndex,m3]of body.messages.entries()){const before=msgs.length;const blocks=typeof m3.content==="string"?[{type:"text",text:m3.content}]:m3.content;for(const b3 of blocks){switch(b3.type){case"text":{const base=deriveCanonicalMessageId(m3.role,"text",b3.text);const id=clusters.next(base);msgs.push({id,role:m3.role,contentType:"text",text:b3.text});if(b3.cache_control)cacheControls.set(id,b3.cache_control);break}case"tool_use":{const base=deriveCanonicalMessageId("assistant","tool-call",canonicalToolArgs(safeStringify(b3.input)),{toolName:b3.name});const id=clusters.next(base);msgs.push({id,role:"assistant",contentType:"tool-call",toolName:b3.name,toolCallId:b3.id,text:safeStringify(b3.input)});toolNames.set(b3.id,b3.name);if(b3.cache_control)cacheControls.set(id,b3.cache_control);break}case"tool_result":{const hasNonText=Array.isArray(b3.content)&&b3.content.some(c=>c.type!=="text");const text=typeof b3.content==="string"?b3.content:b3.content.map(c=>c.type==="text"?c.text:"").join("\n");const name=toolNames.get(b3.tool_use_id);const base=deriveCanonicalMessageId("tool","tool-result",text,{toolName:name});const id=clusters.next(base);msgs.push({id,role:"tool",contentType:"tool-result",toolCallId:b3.tool_use_id,text,...name?{toolName:name}:{},...b3.is_error===true?{toolIsError:true}:{},...hasNonText?{rawAnthropicBlock:b3}:{}});if(b3.cache_control)cacheControls.set(id,b3.cache_control);break}case"thinking":{const base=deriveCanonicalMessageId("assistant","reasoning",b3.thinking);msgs.push({id:clusters.next(base),role:"assistant",contentType:"reasoning",text:b3.thinking,...b3.signature?{thinkingSignature:b3.signature}:{}});break}case"image":{const source=b3.source&&typeof b3.source==="object"&&!Array.isArray(b3.source)?b3.source:void 0;const mediaSidecar=source?.type==="base64"&&typeof source.media_type==="string"&&typeof source.data==="string"?{imageMediaType:source.media_type,imageBase64:source.data}:{};const base=deriveCanonicalMessageId(m3.role,"text",CANONICAL_IMAGE_TEXT,{mediaFingerprint:source?.type==="base64"&&typeof source.data==="string"?imageMediaFingerprint(source.data):typeof source?.url==="string"?imageMediaFingerprint(source.url):void 0});msgs.push({id:clusters.next(base),role:m3.role,contentType:"text",text:CANONICAL_IMAGE_TEXT,imagePart:true,rawAnthropicBlock:b3,...mediaSidecar});break}case"redacted_thinking":{const base=deriveCanonicalMessageId(m3.role,"text",CANONICAL_REDACTED_THINKING_TEXT);msgs.push({id:clusters.next(base),role:m3.role,contentType:"text",text:"[redacted_thinking]",rawAnthropicBlock:b3});break}default:{const unknownType=b3.type;const label=typeof unknownType==="string"?`[${unknownType}]`:"[unknown]";const base=deriveCanonicalMessageId(m3.role,"text",label);msgs.push({id:clusters.next(base),role:m3.role,contentType:"text",text:label,rawAnthropicBlock:b3});break}}}for(let k2=before;k2<msgs.length;k2++){msgs[k2].wireIndex=wireIndex}}return{msgs,cacheControls}}function safeStringify(v3){try{return JSON.stringify(v3??{})}catch{return"{}"}}var FORMS=[{open:"<think>\n",close:"\n</think>"},{open:"<thinking>\n",close:"\n</thinking>"},{open:"```thinking\n",close:"\n```"}];function splitDemotedThinking(content){let rest=content;const parts=[];for(;;){let matched=false;for(const form of FORMS){if(!rest.startsWith(form.open))continue;const end=rest.indexOf(form.close,form.open.length);if(end<0)continue;const inner=rest.slice(form.open.length,end);if(inner.length===0)continue;parts.push(inner);rest=rest.slice(end+form.close.length);if(rest.startsWith("\n"))rest=rest.slice(1);matched=true;break}if(!matched)break}if(parts.length===0)return null;return{reasoning:parts.join("\n"),text:rest}}function parseDataUrl(url){const m3=/^data:([^;,]+)(?:;base64)?,(.+)$/i.exec(url);if(!m3)return void 0;return{mediaType:m3[1],base64:m3[2]}}function imageFingerprintsOfParts(parts){const out=[];for(const part of parts){if(!part||typeof part!=="object")continue;const p2=part;if(p2.type!=="image_url")continue;const url=typeof p2.image_url?.url==="string"?p2.image_url.url:void 0;if(!url)continue;const parsed=parseDataUrl(url);out.push(imageMediaFingerprint(parsed?parsed.base64:url))}return out}function openaiToCore(body){const msgs=[];const systemParts=[];const clusters=new ClusterCounter;const toolNames=new Map;for(const[wireIndex,m3]of body.messages.entries()){const before=msgs.length;switch(m3.role){case"system":case"developer":{if(msgs.length===0){systemParts.push(stringContent(m3.content));break}const base=deriveCanonicalMessageId(m3.role,"text",stringContent(m3.content));msgs.push({id:clusters.next(base),role:"system",contentType:"text",text:stringContent(m3.content),originalRole:m3.role});break}case"user":{if(typeof m3.content==="string"||m3.content==null||!Array.isArray(m3.content)){const base=deriveCanonicalMessageId("user","text",typeof m3.content==="string"?m3.content:"");msgs.push({id:clusters.next(base),role:"user",contentType:"text",text:typeof m3.content==="string"?m3.content:""});break}let lastTextCore=null;let leadingOpaque=[];let sawText=false;for(const part of m3.content){if(typeof part==="string"){const base=deriveCanonicalMessageId("user","text",part);lastTextCore={id:clusters.next(base),role:"user",contentType:"text",text:part};msgs.push(lastTextCore);sawText=true;continue}if(part?.type==="text"&&typeof part.text==="string"){const base=deriveCanonicalMessageId("user","text",part.text);lastTextCore={id:clusters.next(base),role:"user",contentType:"text",text:part.text};msgs.push(lastTextCore);sawText=true;continue}if(part?.type==="image_url"){const url=part.image_url?.url;const parsed=typeof url==="string"?parseDataUrl(url):void 0;const base=deriveCanonicalMessageId("user","text",CANONICAL_IMAGE_TEXT,{mediaFingerprint:imageMediaFingerprint(parsed?parsed.base64:typeof url==="string"?url:"")});msgs.push({id:clusters.next(base),role:"user",contentType:"text",text:CANONICAL_IMAGE_TEXT,imagePart:true,rawOpenaiContent:part,...parsed?{imageMediaType:parsed.mediaType,imageBase64:parsed.base64}:{}});continue}if(lastTextCore){lastTextCore.rawOpenaiContentParts=[...lastTextCore.rawOpenaiContentParts??[],part]}else{leadingOpaque=[...leadingOpaque,part]}}if(leadingOpaque.length>0){if(sawText&&msgs.length>0){const firstTextCore=msgs.find((c,i)=>i>=before&&c.role==="user"&&c.contentType==="text"&&!c.rawOpenaiContent);const host=firstTextCore??msgs[msgs.length-1];host.rawOpenaiContentParts=[...leadingOpaque,...host.rawOpenaiContentParts??[]]}else{const base=deriveCanonicalMessageId("user","text","",{mediaFingerprint:imageFingerprintsOfParts(leadingOpaque).join(",")||void 0});msgs.push({id:clusters.next(base),role:"user",contentType:"text",text:"",rawOpenaiContentParts:leadingOpaque})}}break}case"assistant":{const rawReasoning=m3.reasoning_content;const fieldPresent=typeof rawReasoning==="string";const fieldReasoning=fieldPresent?rawReasoning:"";let reasoning=fieldReasoning;let text=stringContent(m3.content);if(!reasoning){const split=splitDemotedThinking(text);if(split){reasoning=split.reasoning;text=split.text}}const blankEcho=fieldPresent&&reasoning.length===0;if(reasoning){const base=deriveCanonicalMessageId("assistant","reasoning",reasoning);msgs.push({id:clusters.next(base),role:"assistant",contentType:"reasoning",text:reasoning,reasoningContent:reasoning})}if(text){const base=deriveCanonicalMessageId("assistant","text",text);msgs.push({id:clusters.next(base),role:"assistant",contentType:"text",text,...blankEcho?{reasoningPresent:true}:{}})}if(Array.isArray(m3.tool_calls)){for(const tc of m3.tool_calls){const base=deriveCanonicalMessageId("assistant","tool-call",canonicalToolArgs(tc.function.arguments??""),{toolName:tc.function.name});msgs.push({id:clusters.next(base),role:"assistant",contentType:"tool-call",toolName:tc.function.name,toolCallId:tc.id,text:tc.function.arguments??"",...blankEcho?{reasoningPresent:true}:{}});toolNames.set(tc.id,tc.function.name)}}break}case"tool":{const base=deriveCanonicalMessageId("tool","tool-result",stringContent(m3.content),{toolName:m3.name||toolNames.get(m3.tool_call_id??"")});const name=m3.name||toolNames.get(m3.tool_call_id??"");msgs.push({id:clusters.next(base),role:"tool",contentType:"tool-result",toolCallId:m3.tool_call_id??"",text:stringContent(m3.content),...name?{toolName:name}:{}});break}}for(let k2=before;k2<msgs.length;k2++){msgs[k2].wireIndex=wireIndex}}return{msgs,systemText:systemParts.join("\n\n")}}function stringContent(content){if(content==null)return"";if(typeof content==="string")return content;if(Array.isArray(content)){return content.map(p2=>typeof p2==="string"?p2:p2.type==="text"?p2.text??"":"").join("\n")}return""}var OPAQUE_ITEM_TYPES=new Set(["additional_tools","mcp_list_tools"]);function isOpaqueItem(item){return OPAQUE_ITEM_TYPES.has(item.type)}var EASY_INPUT_ROLES=new Set(["user","assistant","system","developer"]);function normalizeEasyInputItem(item){if(typeof item.type==="string")return item;if(EASY_INPUT_ROLES.has(String(item.role))){return{...item,type:"message"}}return item}function shouldDropAllReasoning(){return(process.env.ACP_REASONING_KEEP??"").trim().toLowerCase()==="none"}function partText(part){if(part.type==="input_text"||part.type==="output_text"){return typeof part.text==="string"?part.text:""}return""}function messageContent(content){return typeof content==="string"?content:content.map(partText).join("\n")}function userDisplayText(content,text){if(typeof content==="string")return text;const hasImage=content.some(part=>part.type==="input_image");const hasTextPart=content.some(part=>part.type==="input_text"||part.type==="output_text");return!text||hasImage&&!hasTextPart?"[image]":text}function reasoningText(item){const fromParts=(parts,type)=>{if(!Array.isArray(parts))return"";const texts=[];for(const part of parts){if(part&&typeof part==="object"&&"type"in part&&"text"in part){const rec=part;if(rec.type===type&&typeof rec.text==="string")texts.push(rec.text)}}return texts.join("\n")};const content="content"in item?item.content:void 0;const summary="summary"in item?item.summary:void 0;return fromParts(content,"reasoning_text")||fromParts(summary,"summary_text")}function responsesToCore(body){const msgs=[];const systemParts=[];const preamble=[];const customToolCallIds=new Set;const layout=[];let droppedReasoning=0;const clusters=new ClusterCounter;const toolNames=new Map;let idx=0;if(typeof body.instructions==="string"&&body.instructions.trim())systemParts.push(body.instructions);if(typeof body.input==="string"){const id=clusters.next(deriveCanonicalMessageId("user","text",body.input));msgs.push({id,role:"user",contentType:"text",text:body.input});return{msgs,systemParts,preamble,customToolCallIds,layout,droppedReasoning,stringInput:{original:body.input,coreId:id}}}for(const[wireIndex,raw]of body.input.entries()){const item=normalizeEasyInputItem(raw);let coreId;const before=msgs.length;if(isOpaqueItem(item))preamble.push(item);switch(item.type){case"reasoning":{if(shouldDropAllReasoning()){droppedReasoning++;continue}const text=reasoningText(item);const rid=text.length>0?text:canonicalOpaqueSeed(item);coreId=clusters.next(deriveCanonicalMessageId("assistant","reasoning",rid));msgs.push({id:coreId,role:"assistant",contentType:"reasoning",text:rid,rawResponsesItem:item});break}case"message":{const message=item;const text=messageContent(message.content);if(message.role==="system"||message.role==="developer"){systemParts.push(text);idx++;continue}else if(message.role==="user"||message.role==="assistant"&&text){const role=message.role;const splittable=role==="user"&&Array.isArray(message.content)&&message.content.length>1&&message.content.every(part=>typeof part==="object"&&part!==null&&(part.type==="input_text"||part.type==="output_text"||part.type==="input_image"));if(splittable){for(const rawPart of message.content){const part=typeof rawPart==="object"&&rawPart!==null?rawPart:void 0;if(!part)continue;if((part.type==="input_text"||part.type==="output_text")&&typeof part.text==="string"&&part.text.length>0){const base=deriveCanonicalMessageId("user","text",part.text);msgs.push({id:clusters.next(base),role:"user",contentType:"text",text:part.text})}else if(part.type==="input_image"&&typeof part.image_url==="string"){const image=parseDataUrl(part.image_url);const base=deriveCanonicalMessageId("user","text",CANONICAL_IMAGE_TEXT,{mediaFingerprint:imageMediaFingerprint(image?image.base64:part.image_url)});msgs.push({id:clusters.next(base),role:"user",contentType:"text",text:CANONICAL_IMAGE_TEXT,imagePart:true,rawResponsesItem:item,...image?{imageMediaType:image.mediaType,imageBase64:image.base64}:{}})}}break}let effText=text;if(role==="assistant"){const split=splitDemotedThinking(text);if(split){msgs.push({id:clusters.next(deriveCanonicalMessageId("assistant","reasoning",split.reasoning)),role:"assistant",contentType:"reasoning",text:split.reasoning,rawResponsesItem:item});effText=split.text}}const hasImage=Array.isArray(message.content)&&message.content.some(part=>part.type==="input_image");if(effText||role==="user"&&hasImage){const displayText=role==="user"?userDisplayText(message.content,effText):effText;const mediaFingerprint=Array.isArray(message.content)?message.content.flatMap(part=>{if(part?.type==="input_image"&&typeof part.image_url==="string"){const raw2=part.image_url;const decoded=parseDataUrl(raw2);return[imageMediaFingerprint(decoded?decoded.base64:raw2)]}return[]}).join(",")||void 0:void 0;coreId=clusters.next(deriveCanonicalMessageId(role,"text",displayText,{mediaFingerprint}));const imageUrl=Array.isArray(message.content)?message.content.find(part=>part.type==="input_image"&&typeof part.image_url==="string")?.image_url:void 0;const image=typeof imageUrl==="string"?parseDataUrl(imageUrl):void 0;msgs.push({id:coreId,role,contentType:"text",text:displayText,rawResponsesItem:item,...image?{imageMediaType:image.mediaType,imageBase64:image.base64}:{}})}}break}case"function_call":{const call=item;coreId=clusters.next(deriveCanonicalMessageId("assistant","tool-call",canonicalToolArgs(call.arguments??""),{toolName:call.name}));msgs.push({id:coreId,role:"assistant",contentType:"tool-call",toolName:call.name,toolCallId:call.call_id,text:call.arguments??"",rawResponsesItem:item});toolNames.set(call.call_id,call.name);break}case"function_call_output":{const output=item;const text=typeof output.output==="string"?output.output:JSON.stringify(output.output);coreId=clusters.next(deriveCanonicalMessageId("tool","tool-result",text,{toolName:toolNames.get(output.call_id)}));const name=toolNames.get(output.call_id);msgs.push({id:coreId,role:"tool",contentType:"tool-result",toolCallId:output.call_id,text,...name?{toolName:name}:{},rawResponsesItem:item});break}case"computer_call":case"computer_call_output":case"file_search_call":case"web_search_call":case"image_generation_call":case"code_interpreter_call":case"mcp_call":{const rid=canonicalOpaqueSeed(item);coreId=clusters.next(deriveCanonicalMessageId("assistant","responses-call",rid));msgs.push({id:coreId,role:"assistant",contentType:"reasoning",text:rid,rawResponsesItem:item});break}case"custom_tool_call":{const ctc=item;const callId=ctc.call_id??`call_${idx}`;customToolCallIds.add(callId);const argText=ctc.input??ctc.arguments??"";coreId=clusters.next(deriveCanonicalMessageId("assistant","tool-call",argText,{toolName:ctc.name??"custom"}));msgs.push({id:coreId,role:"assistant",contentType:"tool-call",toolName:ctc.name??"custom",toolCallId:callId,text:argText,rawResponsesItem:item});toolNames.set(callId,ctc.name??"custom");break}case"custom_tool_call_output":{const ctco=item;const callId=ctco.call_id??`call_${idx}`;customToolCallIds.add(callId);const outText=typeof ctco.output==="string"?ctco.output:JSON.stringify(ctco.output??"");coreId=clusters.next(deriveCanonicalMessageId("tool","tool-result",outText,{toolName:toolNames.get(callId)}));const name=toolNames.get(callId);msgs.push({id:coreId,role:"tool",contentType:"tool-result",toolCallId:callId,text:outText,...name?{toolName:name}:{},rawResponsesItem:item});break}default:if(!isOpaqueItem(item))preamble.push(item);break}for(let k2=before;k2<msgs.length;k2++){msgs[k2].wireIndex=wireIndex}const produced=msgs.slice(before).map(m3=>m3.id);layout.push({original:item,...produced.length>0?{coreId:produced[0]}:{},...produced.length>1?{coreIds:produced}:{}});idx++}return{msgs,systemParts,preamble,customToolCallIds,layout,droppedReasoning}}function createSubagentNamespaces(){const anchors=new Map;return{namespaceFor(identityValue,instructions){if(typeof instructions!=="string"||instructions.trim().length===0)return identityValue;const fp=hashId2(instructions);const anchor=anchors.get(identityValue);if(anchor===void 0){anchors.set(identityValue,fp);return identityValue}return anchor===fp?identityValue:`${identityValue}|sub:${fp}`}}}var defaultNamespaces=createSubagentNamespaces();function detectWireFormat(payload){if(payload===null||typeof payload!=="object")return void 0;const p2=payload;if(Array.isArray(p2.contents))return"google";if(Array.isArray(p2.input))return"responses";const messages=p2.messages;if(!Array.isArray(messages))return void 0;if("system"in p2||"anthropic_version"in p2)return"anthropic";for(const m3 of messages){if(m3===null||typeof m3!=="object")continue;const c=m3.content;if(Array.isArray(c)){for(const b3 of c){if(b3&&typeof b3==="object"&&typeof b3.type==="string"){if(b3.type==="tool_use"||b3.type==="tool_result"||b3.type==="thinking")return"anthropic";if(b3.type==="text"&&"cache_control"in b3)return"anthropic"}}}if(Array.isArray(m3.tool_calls))return"openai";if(m3.role==="tool"&&typeof m3.tool_call_id==="string")return"openai";if(m3.role==="system"||m3.role==="developer")return"openai"}return"openai"}var DEFAULT_MAX_FUTURE_SKEW_MS=2*60*1e3;var DEFAULT_RECENT_CHECKPOINT_WINDOW_MS=10*60*1e3;var MAX_CHECKPOINT_CHARS=512;var TAG_OPEN="<bili-chain ";var TAG_CLOSE="/>";var ATTRS=["v","processor","issued-at","request-id","digest"];function validAttrValue(name,raw){switch(name){case"v":return/^\d+$/.test(raw)&&Number(raw)>=1;case"issued-at":return/^\d{1,16}$/.test(raw);case"processor":return/^[A-Za-z0-9._-]{1,64}$/.test(raw);case"request-id":return/^[A-Za-z0-9._:-]{1,64}$/.test(raw);case"digest":return/^sha256:[0-9a-f]{64}$/.test(raw)}}function parseChainCheckpoint(text){if(typeof text!=="string"||text.length===0||text.length>MAX_CHECKPOINT_CHARS)return null;if(!text.startsWith(TAG_OPEN)||!text.endsWith(TAG_CLOSE))return null;const inner=text.slice(TAG_OPEN.length,-TAG_CLOSE.length);const found={};for(const token of inner.split(/\s+/)){const m3=/^([a-z][a-z0-9-]*)="([^"]*)"$/.exec(token);if(!m3)return null;const name=m3[1];if(!ATTRS.includes(name))return null;if(Object.hasOwn(found,name))return null;found[name]=m3[2]}for(const attr of ATTRS){const raw=found[attr];if(raw===void 0||!validAttrValue(attr,raw))return null}return{v:Number(found.v),processor:found.processor,issuedAt:Number(found["issued-at"]),requestId:found["request-id"],digest:found.digest}}function stripEmbeddedChainCarriers(parsed,wire){if(parsed===null||typeof parsed!=="object"||Array.isArray(parsed))return 0;const body=parsed;let stripped=0;if(wire==="google"){const contents=body.contents;if(!Array.isArray(contents))return 0;for(let i=contents.length-1;i>=0;i--){const c=contents[i];if(!c||typeof c!=="object"||Array.isArray(c))continue;const ct2=c;const role=typeof ct2.role==="string"?ct2.role:"user";if(role!=="user"&&role!=="model")continue;const parts=ct2.parts;if(!Array.isArray(parts))continue;let removed=0;for(let j3=parts.length-1;j3>=0;j3--){const p2=parts[j3];if(p2&&typeof p2==="object"&&!Array.isArray(p2)&&Object.keys(p2).length===1&&typeof p2.text==="string"){if(parseChainCheckpoint(p2.text)){parts.splice(j3,1);removed++}}}if(removed>0){if(parts.length===0)contents.splice(i,1);stripped+=removed}}return stripped}if(wire==="responses"){const input=body.input;if(!Array.isArray(input))return 0;for(let i=input.length-1;i>=0;i--){const item=input[i];if(!item||typeof item!=="object"||Array.isArray(item))continue;const it2=item;if(it2.type!=="message")continue;const role=typeof it2.role==="string"?it2.role:"";if(role!=="user"&&role!=="assistant")continue;const content=it2.content;if(typeof content==="string"){if(parseChainCheckpoint(content)){input.splice(i,1);stripped++}continue}if(!Array.isArray(content))continue;let removed=0;for(let j3=content.length-1;j3>=0;j3--){const p2=content[j3];if(p2&&typeof p2==="object"&&!Array.isArray(p2)){const po2=p2;if(po2.type==="input_text"&&typeof po2.text==="string"&&Object.keys(po2).length===2&&parseChainCheckpoint(po2.text)){content.splice(j3,1);removed++}}}if(removed>0){if(content.length===0)input.splice(i,1);stripped+=removed}}return stripped}const messages=body.messages;if(!Array.isArray(messages))return 0;for(let i=messages.length-1;i>=0;i--){const rec=messages[i];if(!rec||typeof rec!=="object"||Array.isArray(rec))continue;const m3=rec;if(m3.role!=="user"&&m3.role!=="assistant")continue;const content=m3.content;if(typeof content==="string"){if(parseChainCheckpoint(content)){messages.splice(i,1);stripped++}continue}if(!Array.isArray(content))continue;let removed=0;for(let j3=content.length-1;j3>=0;j3--){const p2=content[j3];if(p2&&typeof p2==="object"&&!Array.isArray(p2)){const po2=p2;if(po2.type==="text"&&typeof po2.text==="string"&&Object.keys(po2).length===2&&parseChainCheckpoint(po2.text)){content.splice(j3,1);removed++}}}if(removed>0){if(content.length===0)messages.splice(i,1);stripped+=removed}}return stripped}var ZERO_DIGEST="sha256:"+"0".repeat(64);function buildAcplikeName(){const cores=["acp","apc","cap","cpa","pac","pca"];const ci2=ch=>`[${ch}${ch.toUpperCase()}]`;const attestedDrift=["[aA][cC][cC][eE][sS][sS][pP]","[aA][cC][aA][cC][pP]","[aA][cC][bB]"];const fourLetter=new Set;const threeLetter=new Set;for(const c of cores){threeLetter.add(ci2(c.charAt(0))+ci2(c.charAt(1))+ci2(c.charAt(2)));for(let pos=0;pos<=c.length;pos++){fourLetter.add(c.slice(0,pos).split("").map(ci2).join("")+"[aAcCpPiI]"+c.slice(pos).split("").map(ci2).join(""))}}return[...attestedDrift,...fourLetter,...threeLetter].join("|")}var ACP_NAME_ALT=`(?:${buildAcplikeName()})`;var NAME=ACP_NAME_ALT;var REF_TOKEN="m\\d{4,}";var REFS_RUN=REF_TOKEN+"(?:\\s*[\\u2013\\u2014,\\-]?\\s*"+REF_TOKEN+")*";var REFS_ONLY=new RegExp("^\\s*"+REFS_RUN+"\\s*$");var PENDING_REF_SPAN=new RegExp("^\\s*"+REFS_RUN+"(?:\\s*[\\u2013\\u2014,\\-]?\\s*(?:m\\d{0,3})?)?\\s*$");var PAIRED_BODY="\\s*(?:"+REFS_RUN+")?\\s*";var PAIRED=new RegExp("<"+NAME+"(?:\\s[^<>]*)?>("+PAIRED_BODY+")<\\/"+NAME+">");var ORPHAN_REF_CLOSE=new RegExp("(?<![\\w>])"+REFS_RUN+"\\s*<\\/"+NAME+"(?=[\\s>])[^<>]{0,32}>");var ORPHAN_RUN_BEFORE=new RegExp("(?<![\\w>])"+REFS_RUN+"\\s*$");var LONE_OPEN=new RegExp("<"+NAME+"(?:\\s[^<>]*)?>");var LONE_CLOSE=new RegExp("<\\/"+NAME+"(?=[\\s>])[^<>]{0,32}>");var DEGEN_PAIR=new RegExp("<"+NAME+"(?:\\s[^<>]*)?>\\s*m\\d{4,}\\s*<\\/[^<>]{1,32}>","g");var SELF_CLOSE=new RegExp("<"+NAME+"(?:\\s[^<>]*)?\\/>");var PARTIAL_TAIL=new RegExp("(<"+NAME+"\\s[^<>]*|<"+NAME+"\\s*=\\s*[^<>]*|<\\/"+NAME+"(?:\\s[^<>]{0,32})?|<\\/?[aAcCpPiI]*(?:/)?|(?<![\\w>])\\s*"+REFS_RUN+"\\s*<[^<>]*|(?<![\\w>])\\s*"+REFS_RUN+"(?:\\s*[\\u2013\\u2014,\\-]?\\s*(?:m\\d{0,3})?)?\\s*|(?<![\\w>])\\s*m\\d{0,3})$");var TRUNC_OPEN=new RegExp("<"+NAME+"\\s[^<>]*$|<"+NAME+"\\s*=\\s*[^<>]*$");var TRUNC_CLOSE=new RegExp("<\\/"+NAME+"(?:\\s[^<>]{0,32})?$");var TRUNC_REF_CLOSE=new RegExp("m\\d{4,}\\s*\\x3c\\/([a-zA-Z]{0,32})$");var DEAD_REF_CLOSE=new RegExp("(?<![\\w>])m\\d{4,}\\s*\\x3c\\/[a-zA-Z]{0,32}(?![a-zA-Z])(?![^\\x3c\\x3e]{0,32}\\x3e)","g");var BROKEN_ATTRS=new RegExp("<"+NAME+"\\s[^<>]*(?=<)");var MANGLED_OPEN=new RegExp("<"+NAME+"\\s*=\\s*[^<>]*>");var DEFINITE_TAIL=new RegExp("^<"+NAME+"\\s|^<"+NAME+"=|^<\\/"+NAME);var OPEN_WITH_ATTRS=new RegExp("^<"+NAME+"\\s");var CLOSE_NAME_ANCHORED=new RegExp("^"+NAME);var MARKER_HEAD=new RegExp("^\\p{So}(?:[ \\t])?\\[ACP\\]","u");var MARKER_LINE=new RegExp("^\\p{So}(?:[ \\t])?\\[ACP\\][^\\n]*\\n?","gmu");function stripMarkerLines(text){return text.replace(MARKER_LINE,"")}var RENDER_TAG_DETECT=new RegExp("<\\/?"+NAME+"(?=[\\s>])|\\\\u003c\\/?"+NAME+"(?=[\\s>\\\\])|<"+NAME+"\\s*\\/|\\\\u003c"+NAME+"\\s*\\/");var BROAD_TAG_HEAD_TAIL=new RegExp("<\\/?[A-Za-z0-9]{0,16}$");var RAW_WS="(?:\\\\[a-z]|\\s|\\\\)*";var TC_PARAM_REF_RAW=new RegExp(`\\x3c(?:antml:)?parameter(?:\\s*=\\s*["']?ref["']?|\\s+name\\s*=\\s*["']ref["'])?[^<>]*\\x3e`+RAW_WS+"m\\d{4,}"+RAW_WS+"\\x3c\\/(?:antml:)?parameter","i");var CHAIN_OPEN_ESCAPED="\\u003c"+TAG_OPEN.slice(1);function reEscape(s3){return s3.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function prefixAlts(s3,minLen){const out=[];for(let k2=minLen;k2<s3.length;k2++)out.push(reEscape(s3.slice(0,k2)));return out}var CHAIN_PARTIAL_TAIL=new RegExp("("+[...new Set([...prefixAlts(TAG_OPEN,1),reEscape(TAG_OPEN),...prefixAlts(CHAIN_OPEN_ESCAPED,1),reEscape(CHAIN_OPEN_ESCAPED)])].join("|")+")$");var HEAD_PREFIX_TAIL=new RegExp("(?:^|\n)("+[...new Set([...prefixAlts(CODEX_FORGED_HANDOFF_HEADER,1),...prefixAlts(FORGED_SUMMARY_HEADER,1)])].join("|")+")$");var TAG_PARTIAL_TAIL=new RegExp("(<"+NAME+"\\s[^<>]*|<\\/"+NAME+"(?:\\s[^<>]{0,32})?|<\\/?[aAcCpPiI]*(?:/)?)$");var PANEL_BOX_TOP="\u256D";var PANEL_BOX_TITLE="ACP Context Analysis";var PANEL_BOX_FOOTER="Tag visibility: tags injected to LLM only (deep copy), not persisted in session, not shown in terminal.";var PANEL_FALLBACK_HEADER="\u{1F4CA} ACP status";var CACHE_REPORT_OPEN="[acp-cache]";var CACHE_REPORT_CLOSE="[/acp-cache]";var RULE_REPORT_OPEN="[acp-rule]";var RULE_REPORT_CLOSE="[/acp-rule]";function wrapCacheReport(report){return`${CACHE_REPORT_OPEN}
|
|
130
|
+
`)}}function pickEphemeralPort(host=LAUNCHER_DEFAULT_HOST){return new Promise((resolve,reject)=>{const srv=net3.createServer();srv.once("error",reject);srv.listen(0,host,()=>{const addr=srv.address();srv.close(()=>{if(addr&&typeof addr==="object")resolve(addr.port);else reject(new Error("could not allocate a free port"))})})})}var INHERITED_PROXY_VARS=["http_proxy","https_proxy","all_proxy","HTTP_PROXY","HTTPS_PROXY","ALL_PROXY","no_proxy","NO_PROXY"];var INTERNAL_LAUNCHER_CHANNEL_VARS=["BILI_LAUNCHER_LANE","BILI_LAUNCHER_MODEL_WINDOWS","BILI_LAUNCHER_MODEL_MAX_OUTPUTS","BILI_STRICT_PORT"];function stripInternalLauncherChannels(env){const cleaned={...env};for(const key of INTERNAL_LAUNCHER_CHANNEL_VARS)delete cleaned[key];return cleaned}function stripInheritedProxy(env){const cleaned={...env};for(const key of INHERITED_PROXY_VARS)delete cleaned[key];return stripInternalLauncherChannels(cleaned)}function captureInheritedProxyEnv(env){const captured={};const pairs=[["BILI_INHERITED_HTTP_PROXY",env.HTTP_PROXY,env.http_proxy],["BILI_INHERITED_HTTPS_PROXY",env.HTTPS_PROXY,env.https_proxy],["BILI_INHERITED_ALL_PROXY",env.ALL_PROXY,env.all_proxy],["BILI_INHERITED_NO_PROXY",env.NO_PROXY,env.no_proxy]];for(const[name,upper,lower]of pairs){const value=(upper??lower??"").trim();if(value)captured[name]=value}return captured}function proxyStartArgs(opts){const args=["start","--host",opts.host,"--port",String(opts.port)];if(opts.passthrough)args.push("--passthrough");if(opts.debug)args.push("--debug");return args}function probeNodeWrapperTarget(candidate,env){try{const out=execFileSync5(candidate,["-p","process.execPath"],{windowsHide:true,timeout:5e3,encoding:"utf8",stdio:["ignore","pipe","pipe"],env});const p2=out.trim();return p2.length>0?p2:void 0}catch{return void 0}}function probeNodeMajor(candidate,env){try{const out=execFileSync5(candidate,["--version"],{windowsHide:true,timeout:5e3,encoding:"utf8",stdio:["ignore","pipe","pipe"],env});const m3=/^v(\d+)\.\d+\.\d+/.exec(out.trim());return m3?Number(m3[1]):void 0}catch{return void 0}}var MIN_PROXY_NODE_MAJOR=20;function looksLikeNodeExecutable(p2,platform){if(platform==="win32"){if(!/^[a-zA-Z]:[\\/]/.test(p2))return false}else if(!p2.startsWith("/")){return false}const base=p2.split(/[\\/]/).pop()?.toLowerCase()??"";return base==="node"||base==="node.exe"}function resolveNodeRuntime(execPath=process.execPath,env=process.env,platform=process.platform,existsImpl=fs14.existsSync,electronVersion=typeof process.versions.electron==="string"?process.versions.electron:void 0,probeWrapper=probeNodeWrapperTarget,probeNode=probeNodeMajor){const base=path25.basename(execPath).toLowerCase();if(base==="node"||base==="node.exe")return execPath;const override=typeof env.BILLION_CONTEXT_NODE==="string"?env.BILLION_CONTEXT_NODE.trim():"";if(override.length>0&&existsImpl(override))return override;const resolveDiscovered=candidate=>{let subject=candidate;if(platform==="win32"){const probed=probeWrapper(candidate,env);const target=probed?.trim();if(target&&target.length>0&&looksLikeNodeExecutable(target,platform)&&existsImpl(target)){if(target.toLowerCase()!==candidate.toLowerCase()){log("info",`bili: ${candidate} is a Windows node wrapper resolving to ${target} \u2014 spawning the real Node directly (#1887)`);subject=target}}}const major=probeNode(subject,env);if(major===void 0||major<MIN_PROXY_NODE_MAJOR)return void 0;return subject};const sep=platform==="win32"?";":":";const names=platform==="win32"?["node.exe"]:["node"];const home=platform==="win32"?env.USERPROFILE??"":env.HOME??"";const voltaHome=platform==="win32"?env.VOLTA_HOME??(home?home+"/Tools/volta":""):home?home+"/.volta":"";const extraDirs=platform==="win32"?["C:/Program Files/nodejs",env.LOCALAPPDATA?env.LOCALAPPDATA+"/Programs/nodejs":"",voltaHome?voltaHome+"/bin":""]:["/usr/local/bin","/opt/homebrew/bin","/opt/local/bin",voltaHome?voltaHome+"/bin":"",home?home+"/.local/bin":""];for(const dir of[...(env.PATH??"").split(sep),...extraDirs]){if(!dir)continue;for(const name of names){const candidate=dir.endsWith("/")||dir.endsWith("\\")?dir+name:dir+"/"+name;if(!existsImpl(candidate))continue;const resolved=resolveDiscovered(candidate);if(resolved!==void 0)return resolved;log("warn",`bili: skipping ${candidate} \u2014 not a usable Node runtime (--version did not report v${MIN_PROXY_NODE_MAJOR}+; set BILLION_CONTEXT_NODE if this is wrong, #3383)`)}}if(electronVersion&&electronVersion.length>0){log("warn",`bili: no usable Node runtime found on PATH or install dirs \u2014 falling back to the Electron host binary ${execPath} run as Node via ELECTRON_RUN_AS_NODE=1 (#1429/#3383)`);return execPath}throw new Error("bili: cannot find a Node runtime to spawn the proxy (this process is not Node) \u2014 set BILLION_CONTEXT_NODE")}var PORT_LOG_MAX_BYTES=5*1024*1024;function rotatePortLogIfNeeded(logPath2){try{if(fs14.statSync(logPath2).size<PORT_LOG_MAX_BYTES)return;try{fs14.unlinkSync(`${logPath2}.old`)}catch{}fs14.renameSync(logPath2,`${logPath2}.old`)}catch{}}var STALE_ROTATION_WAIT_MS=12e3;var SHUTDOWN_REQUEST_TIMEOUT_MS=3e3;var OWNER_HEARTBEAT_INTERVAL_MS=5e3;var OWNER_HEARTBEAT_POST_TIMEOUT_MS=2e3;async function requestInstanceShutdown(origin){try{const res=await fetch(`${origin}/__bili/shutdown`,{method:"POST",headers:{"content-type":"application/json"},body:"{}",signal:AbortSignal.timeout(SHUTDOWN_REQUEST_TIMEOUT_MS)});return res.ok}catch{return false}}async function rotateStalePredecessor(probed,resolveTargetPort,opts,attachUrl,foreignLanes,fetchHealthInfo,now,sleep,requestShutdown){if(attachUrl!==void 0)return;const stale=probed.filter(c=>!isUserZoneInstance(c.inst)&&c.health.watchdog?.armed===true&&instanceShapeMismatch(c.inst,opts,foreignLanes)===void 0&&c.health.version!==void 0&&isVersionNewer(VERSION,c.health.version));if(stale.length===0)return;const targetPort=resolveTargetPort();if(targetPort===void 0)return;const candidate=stale.find(c=>c.inst.port===targetPort);if(!candidate)return;const running=candidate.health.version;if(running===void 0||!isVersionNewer(VERSION,running))return;console.error(`bili: rotating stale proxy ${candidate.inst.origin} (pid ${candidate.inst.pid}, running v${running}) \u2014 ours is v${VERSION}; requesting graceful shutdown before taking over port ${targetPort}`);const asked=await requestShutdown(candidate.inst.origin);if(!asked){console.error(`bili: stale rotation skipped \u2014 ${candidate.inst.origin} refused /__bili/shutdown (older build); falling back to the normal spawn ladder`);return}const deadline=now()+STALE_ROTATION_WAIT_MS;for(;;){const h=await fetchHealthInfo(candidate.inst.origin);if(!h?.ok)break;if(now()>=deadline){console.error(`bili: stale rotation timed out after ${STALE_ROTATION_WAIT_MS}ms \u2014 ${candidate.inst.origin} still answers healthy; falling back to the normal spawn ladder`);return}await sleep(HEALTH_POLL_INTERVAL_MS)}}function startOwnerHeartbeat(origin,pid,intervalMs=OWNER_HEARTBEAT_INTERVAL_MS,post=async body=>{await fetch(`${origin}/__bili/watcher`,{method:"POST",headers:{"content-type":"application/json"},body,signal:AbortSignal.timeout(OWNER_HEARTBEAT_POST_TIMEOUT_MS)})}){if(pid!==process.pid)return void 0;let stopped=false;const beat=async()=>{while(!stopped){await new Promise(r=>{const t=setTimeout(r,intervalMs);t.unref?.()});if(stopped)return;try{await post(JSON.stringify({pid,hb:true}))}catch{}}};void beat();return()=>{stopped=true}}async function ensureProxyRunning(opts,deps={}){const fetchImpl=deps.fetchImpl??defaultFetch;const fetchHealthInfo=deps.fetchHealthInfo??fetchHealthInfoDefault;const fetchDetail=deps.fetchDetailImpl??defaultFetchDetail;const readInstance=deps.readInstanceFile??readProxyInstanceFile;const listRegistry=deps.listRegistryInstances??discoverLiveInstances;const spawnImpl=deps.spawnImpl??spawn2;const now=deps.now??Date.now;const sleepImpl=deps.sleep??(ms2=>new Promise(r=>setTimeout(r,ms2)));const registerWatcher=deps.registerWatcher??registerWatcherDefault;const attachExternal=(deps.resolveAttachExternal??resolveNativeAttachExternal)();const foreignLanes=(deps.attachLanePriority??resolveNativeAttachLanePriority)();const attachPolicy=(deps.resolveAttachPolicy??resolveNativeAttachPolicy)();const attachUrl=(deps.resolveAttachUrl??resolveNativeAttachUrl)();const refusedLog=new Set;const attachDiag=deps.attachDiag??defaultAttachDiag(opts.debug);const watchPid=opts.parentPid??process.pid;const attachTo=async inst=>{attachDiag(`bili: attaching to running proxy at ${inst.origin} (pid ${inst.pid})`);const reg=await registerWatcher(inst.origin,watchPid);startOwnerHeartbeat(inst.origin,watchPid);const handle={origin:inst.origin,port:inst.port,attached:true};if(reg==="refused")handle.refusedWatcher=true;return handle};const script=deps.scriptPath??process.argv[1];const codeFingerprint=entryScriptFingerprint(script);const probed=await probeLiveInstances(readInstance,fetchHealthInfo,attachDiag);const existing=pickAttachable(probed,opts,codeFingerprint,attachExternal,attachPolicy,attachUrl,refusedLog,attachDiag,foreignLanes);if(existing){return attachTo(existing)}{await rotateStalePredecessor(probed,()=>{const rotLane=opts.lane!==void 0&&opts.port<=0?opts.lane:void 0;return opts.port>0?opts.port:rotLane!==void 0?(deps?.zonePreferredPort??lanePreferredPort)(rotLane):void 0},opts,attachUrl,foreignLanes,fetchHealthInfo,now,sleepImpl,deps?.requestInstanceShutdown??requestInstanceShutdown)}if(!attachExternal&&opts.strictPort){const squatter=probed.find(c=>c.inst.port===opts.port&&instanceCompatible(c.inst,opts,codeFingerprint,foreignLanes)===void 0);if(squatter){throw new Error(`bili: port ${opts.port} is held by a lifecycle-less bili proxy at ${squatter.inst.origin} (pid ${squatter.inst.pid}) \u2014 the #1335 attach gate refuses it by default and this launch pins the port, so no session-owned proxy can bind it either. Kill that process (kill ${squatter.inst.pid}) or set native.attachExternal=true / BILI_NATIVE_ATTACH_EXTERNAL=1 to attach to it anyway.`)}}const waitForOtherStarter=async()=>{attachDiag("bili: another bili launch is bringing up a proxy \u2014 waiting for it instead of spawning a second");const waited=await waitForStarterInstance(readInstance,fetchHealthInfo,now,sleepImpl,opts,codeFingerprint,attachExternal,attachPolicy,attachUrl,refusedLog,attachDiag,foreignLanes);if(waited){return attachTo(waited)}return void 0};const starterLaneMatches=m3=>opts.lane===void 0||m3.lane===void 0||m3.lane===opts.lane;const marker=readStartingMarker();if(marker){if(!isStartingMarkerActive(marker,now())){removeStartingMarker()}else if(starterLaneMatches(marker)){const attached=await waitForOtherStarter();if(attached)return attached}}const launchToken=randomUUID5();const zoneLane=opts.lane!==void 0&&opts.port<=0?opts.lane:void 0;const preferredPort=deps?.zonePreferredPort??lanePreferredPort;const port=opts.port>0?opts.port:zoneLane!==void 0?preferredPort(zoneLane):await pickEphemeralPort(opts.host);const settleZonePort=settled=>{if(zoneLane!==void 0)(deps?.writeZonePort??writeZonePort)(zoneLane,settled)};if(!script)throw new Error("bili: cannot resolve launcher script path");const logPath2=path25.join(os8.tmpdir(),`bili-proxy-${port}.log`);rotatePortLogIfNeeded(logPath2);const logFd=fs14.openSync(logPath2,"a");const claimMarker=()=>claimStartingMarker({token:launchToken,pid:process.pid,host:opts.host,port,startedAt:now(),lane:opts.lane});let claimed=claimMarker();if(!claimed){const holder=readStartingMarker();if(holder&&isStartingMarkerActive(holder,now())){if(starterLaneMatches(holder)){const attached=await waitForOtherStarter();if(attached)return attached;claimed=claimMarker()}}else{removeStartingMarker();claimed=claimMarker()}}try{let child;const runtime=deps.nodeRuntime??resolveNodeRuntime();try{child=spawnImpl(runtime,[script,...proxyStartArgs({...opts,port})],{detached:true,windowsHide:true,stdio:["ignore",logFd,logFd],env:{...stripInheritedProxy(process.env),...captureInheritedProxyEnv(process.env),...process.versions.electron?{ELECTRON_RUN_AS_NODE:"1"}:{},BILI_LAUNCH_TOKEN:launchToken,BILI_PARENT_PID:String(opts.parentPid??process.pid),...opts.lane?{BILI_LAUNCHER_LANE:opts.lane}:{},...opts.mitmDomains&&opts.mitmDomains.length?{BILI_MITM_DOMAINS:opts.mitmDomains.join(",")}:{},...opts.modelWindows&&Object.keys(opts.modelWindows).length>0?{BILI_LAUNCHER_MODEL_WINDOWS:JSON.stringify(opts.modelWindows)}:{},...opts.modelMaxOutputs&&Object.keys(opts.modelMaxOutputs).length>0?{BILI_LAUNCHER_MODEL_MAX_OUTPUTS:JSON.stringify(opts.modelMaxOutputs)}:{},...opts.strictPort?{BILI_STRICT_PORT:"1"}:{}}})}finally{try{fs14.closeSync(logFd)}catch{}}try{child.unref?.()}catch{}let childExit;let childError;let squatterAnnounced=false;child.on?.("exit",(...rest)=>{childExit={code:typeof rest[0]==="number"?rest[0]:null,signal:typeof rest[1]==="string"?rest[1]:null}});child.on?.("error",(...rest)=>{childError=rest[0]});const logHeadSample=()=>{try{const fd=fs14.openSync(logPath2,"r");try{const buf=Buffer.alloc(256);const n=fs14.readSync(fd,buf,0,buf.length,0);if(n===0)return"";let s3=buf.subarray(0,n).toString("utf8").replace(/\s+/g," ").trim();if(s3.length>200)s3=`${s3.slice(0,200)}\u2026`;return` \u2014 child output head: "${s3}"`}finally{fs14.closeSync(fd)}}catch{return""}};const logTail=()=>{try{const size=fs14.statSync(logPath2).size;const rotated=fs14.existsSync(`${logPath2}.old`)?`; earlier output rotated to ${logPath2}.old`:"";return size===0?`, ${size} bytes \u2014 EMPTY, the child produced no output of its own${rotated}`:`, ${size} bytes${rotated}${logHeadSample()}`}catch{return""}};const diagnosePort=async childAlive=>{const origin=proxyOrigin(opts.host,port);let info;let det={ok:false,detail:"probe error"};try{const[i,d3]=await Promise.all([fetchHealthInfo(origin),fetchDetail(healthUrl(origin))]);info=i;det=d3}catch{}if(info?.ok){return info.pid===child.pid?`port ${port} finally answers healthy from our child (pid ${info.pid}) but its instance handshake never matched \u2014 check the instance-file/registry state dir`:`port ${port} is held by a different process${info.pid!==void 0?` (pid ${info.pid})`:""} \u2014 the spawned child never bound it`}if(det.ok){return`port ${port} answered but not with bili's health payload \u2014 a foreign service likely holds it`}const d2=det.detail??"unknown error";if(/^(ECONNREFUSED|ECONNRESET|EHOSTUNREACH|ENETUNREACH|EPIPE)$/i.test(d2)){return`nothing is listening on port ${port} \u2014 the spawned child (${childAlive?"still alive":"already exited"}, pid ${child.pid??"?"}) never bound it`}if(/^HTTP \d{3}$/.test(d2)){return`port ${port} answered ${d2} \u2014 the listener there is not reporting bili health`}if(/^timeout after \d+ms$/i.test(d2)&&await(deps.isConnectable??tcpConnectable)(origin)){return`port ${port} accepts TCP connections but never answers /__bili/health within the probe budget \u2014 the instance there is BUSY (event loop saturated, typically a large compression), not dead (#3654)`}return`last health probe failed with ${d2}`};const deadline=now()+SPAWN_BUDGET_MS;let slowStartNoticed=false;while(now()<deadline){if(childExit||childError!==void 0)break;if(!slowStartNoticed&&now()>=deadline-SLOW_START_GRACE_MS){slowStartNoticed=true;console.error(`bili: spawned proxy not healthy after ${SPAWN_WAIT_MS}ms \u2014 child pid ${child.pid??"?"} is still starting up; extending wait to ${SPAWN_BUDGET_MS}ms total (${await diagnosePort(true)}) (log: ${logPath2}${logTail()})`)}await sleepImpl(HEALTH_POLL_INTERVAL_MS);const inst=readInstance();if(isProxyInstanceFile(inst)&&inst.launchToken===launchToken){if(await probeHealth(inst.origin,fetchImpl)){settleZonePort(inst.port);startOwnerHeartbeat(inst.origin,watchPid);return{origin:inst.origin,port:inst.port,child,logPath:logPath2}}continue}if(child.pid!==void 0){const mine=listRegistry().find(e=>e.pid===child.pid);if(mine&&mine.origin!==""&&await probeHealth(mine.origin,fetchImpl)){settleZonePort(mine.port);startOwnerHeartbeat(mine.origin,watchPid);return{origin:mine.origin,port:mine.port,child,logPath:logPath2}}}const stale=!isProxyInstanceFile(inst)||!isPidAlive(inst.pid);if(stale){const preferredOrigin=proxyOrigin(opts.host,port);const info=await fetchHealthInfo(preferredOrigin);if(info?.ok&&child.pid!==void 0&&info.pid===child.pid){settleZonePort(port);startOwnerHeartbeat(preferredOrigin,watchPid);return{origin:preferredOrigin,port,child,logPath:logPath2}}if(info?.ok&&!squatterAnnounced){squatterAnnounced=true;attachDiag(`bili: port ${port} answers health${info.pid!==void 0?` (pid ${info.pid})`:""} but is not the proxy this launcher spawned (child pid ${child.pid??"?"}) \u2014 waiting for the spawned instance to report its real origin`)}}}const adoptServingTwin=async()=>{const candidates=(deps.listAdoptCandidates??discoverLiveInstances)().filter(inst=>isPidAlive(inst.pid)&&instanceCompatible(inst,opts,codeFingerprint,foreignLanes)===void 0).sort((a,b3)=>Number(b3.port===port)-Number(a.port===port)||b3.startedAt-a.startedAt);for(const inst of candidates){if(!await(deps.isConnectable??tcpConnectable)(inst.origin))continue;attachDiag(`bili: adopting serving twin ${inst.origin} (pid ${inst.pid}) \u2014 the spawned child lost the #3044 duplicate race to it; requests ride the existing instance (#3654)`);return attachTo(inst)}return void 0};const rediscoverAfterChildExit=async()=>{console.error(`bili: spawned proxy exited before becoming healthy \u2014 re-checking for a late-publishing listener on port ${port} before failing`);const rediscoveryDeadline=now()+POST_EXIT_REDISCOVERY_MS;while(now()<rediscoveryDeadline){await sleepImpl(HEALTH_POLL_INTERVAL_MS);const probedAgain=await probeLiveInstances(readInstance,fetchHealthInfo,attachDiag);const late=pickAttachable(probedAgain,opts,codeFingerprint,attachExternal,attachPolicy,attachUrl,refusedLog,attachDiag,foreignLanes);if(late){attachDiag(`bili: attached to ${late.origin} (pid ${late.pid}) \u2014 it published its instance record after the initial discovery`);return attachTo(late)}}return void 0};if(childError!==void 0){const detail=childError instanceof Error?childError.message:String(childError);throw new Error(`bili: proxy spawn failed (${detail}) (runtime: ${runtime}) (log: ${logPath2})`)}if(childExit){if(childExit.code===TWIN_ADOPT_EXIT_CODE){const adopted=await adoptServingTwin();if(adopted!==void 0)return adopted;attachDiag("bili: serving-twin adoption failed verification \u2014 continuing with the standard post-exit re-discovery")}const retried=await rediscoverAfterChildExit();if(retried)return retried;const detail=childExit.code!==null?`code ${childExit.code}${childExit.code===TWIN_ADOPT_EXIT_CODE?" (twin-collision signal)":""}`:childExit.signal?`signal ${childExit.signal}`:"unknown reason";throw new Error(`bili: proxy child exited before becoming healthy (${detail}) \u2014 ${await diagnosePort(false)} (runtime: ${runtime}) (log: ${logPath2}${logTail()})`)}const diagnosis=await diagnosePort(true);killAbandonedChild(child);console.error(`bili: killed spawned proxy (pid ${child.pid??"?"}) after ${SPAWN_BUDGET_MS}ms without health \u2014 ${diagnosis} (log: ${logPath2}${logTail()})`);throw new Error(`bili: proxy did not become healthy within ${SPAWN_BUDGET_MS}ms \u2014 ${diagnosis} (runtime: ${runtime}) (log: ${logPath2}${logTail()})`)}finally{if(claimed)clearStartingMarker(launchToken)}}function killAbandonedChild(child){if(!child||child.pid===void 0||child.pid<=0)return;if(process.platform!=="win32"){try{process.kill(-child.pid,"SIGKILL")}catch{}}else{try{spawnSync3("taskkill",["/F","/T","/PID",String(child.pid)],{windowsHide:true,stdio:"ignore"})}catch{}}try{child.kill?.("SIGKILL")}catch{}}var PATH_EXTS=process.platform==="win32"?[".cmd",".bat",".exe",""]:[""];import fs17 from"fs";import path30 from"path";import{fileURLToPath as fileURLToPath5}from"url";import{createHash as createHash15}from"crypto";import{createHash as createHash14}from"crypto";function hashId2(s3){return createHash14("sha256").update(s3,"utf8").digest("hex").slice(0,16)}var CANONICAL_IMAGE_TEXT="[image]";var CANONICAL_REDACTED_THINKING_TEXT="[redacted_thinking]";function canonicalToolArgs(argsText){const trimmed=argsText.trim();if(!trimmed.startsWith("{")&&!trimmed.startsWith("["))return argsText;try{return JSON.stringify(canonicalize2(JSON.parse(trimmed)))}catch{return argsText}}function canonicalize2(v3){if(Array.isArray(v3))return v3.map(canonicalize2);if(v3!==null&&typeof v3==="object"){const src=v3;const out={};for(const k2 of Object.keys(src).sort())out[k2]=canonicalize2(src[k2]);return out}return v3}var idSalt=null;function deriveCanonicalMessageId(role,contentType,text,options={}){const seed=`${idSalt?idSalt+"|":""}${role}|${contentType}||${options.toolName??""}|${text}`+(options.mediaFingerprint!==void 0?`|${options.mediaFingerprint}`:"");return"h_"+hashId2(seed)}function imageMediaFingerprint(base64OrUrl){return hashId2(base64OrUrl)}function canonicalOpaqueSeed(item){if(item===null||typeof item!=="object")return hashId2(String(item));const src=item;const out={};for(const k2 of Object.keys(src)){if(k2==="id"||k2==="status")continue;out[k2]=src[k2]}return hashId2(JSON.stringify(out))}var ClusterCounter=class{counts=new Map;next(baseId){const n=this.counts.get(baseId)??0;this.counts.set(baseId,n+1);return n===0?baseId:`${baseId}_${n}`}};function anthropicToCore(body){const msgs=[];const cacheControls=new Map;const clusters=new ClusterCounter;const toolNames=new Map;for(const[wireIndex,m3]of body.messages.entries()){const before=msgs.length;if(m3.role==="system"){const core=systemMessageCore(m3,clusters);core.wireIndex=wireIndex;msgs.push(core);const mark=systemMessageMark(m3);if(mark)cacheControls.set(core.id,mark);continue}const blocks=typeof m3.content==="string"?[{type:"text",text:m3.content}]:m3.content;for(const b3 of blocks){switch(b3.type){case"text":{const base=deriveCanonicalMessageId(m3.role,"text",b3.text);const id=clusters.next(base);msgs.push({id,role:m3.role,contentType:"text",text:b3.text});if(b3.cache_control)cacheControls.set(id,b3.cache_control);break}case"tool_use":{const base=deriveCanonicalMessageId("assistant","tool-call",canonicalToolArgs(safeStringify(b3.input)),{toolName:b3.name});const id=clusters.next(base);msgs.push({id,role:"assistant",contentType:"tool-call",toolName:b3.name,toolCallId:b3.id,text:safeStringify(b3.input)});toolNames.set(b3.id,b3.name);if(b3.cache_control)cacheControls.set(id,b3.cache_control);break}case"tool_result":{const hasNonText=Array.isArray(b3.content)&&b3.content.some(c=>c.type!=="text");const text=typeof b3.content==="string"?b3.content:b3.content.map(c=>c.type==="text"?c.text:"").join("\n");const name=toolNames.get(b3.tool_use_id);const base=deriveCanonicalMessageId("tool","tool-result",text,{toolName:name});const id=clusters.next(base);msgs.push({id,role:"tool",contentType:"tool-result",toolCallId:b3.tool_use_id,text,...name?{toolName:name}:{},...b3.is_error===true?{toolIsError:true}:{},...hasNonText?{rawAnthropicBlock:b3}:{}});if(b3.cache_control)cacheControls.set(id,b3.cache_control);break}case"thinking":{const base=deriveCanonicalMessageId("assistant","reasoning",b3.thinking);msgs.push({id:clusters.next(base),role:"assistant",contentType:"reasoning",text:b3.thinking,...b3.signature?{thinkingSignature:b3.signature}:{}});break}case"image":{const source=b3.source&&typeof b3.source==="object"&&!Array.isArray(b3.source)?b3.source:void 0;const mediaSidecar=source?.type==="base64"&&typeof source.media_type==="string"&&typeof source.data==="string"?{imageMediaType:source.media_type,imageBase64:source.data}:{};const base=deriveCanonicalMessageId(m3.role,"text",CANONICAL_IMAGE_TEXT,{mediaFingerprint:source?.type==="base64"&&typeof source.data==="string"?imageMediaFingerprint(source.data):typeof source?.url==="string"?imageMediaFingerprint(source.url):void 0});msgs.push({id:clusters.next(base),role:m3.role,contentType:"text",text:CANONICAL_IMAGE_TEXT,imagePart:true,rawAnthropicBlock:b3,...mediaSidecar});break}case"redacted_thinking":{const base=deriveCanonicalMessageId(m3.role,"text",CANONICAL_REDACTED_THINKING_TEXT);msgs.push({id:clusters.next(base),role:m3.role,contentType:"text",text:"[redacted_thinking]",rawAnthropicBlock:b3});break}default:{const unknownType=b3.type;const label=typeof unknownType==="string"?`[${unknownType}]`:"[unknown]";const base=deriveCanonicalMessageId(m3.role,"text",label);msgs.push({id:clusters.next(base),role:m3.role,contentType:"text",text:label,rawAnthropicBlock:b3});break}}}for(let k2=before;k2<msgs.length;k2++){msgs[k2].wireIndex=wireIndex}}return{msgs,cacheControls}}function systemMessageCore(m3,clusters){const label=systemMessageText(m3);const base=deriveCanonicalMessageId("system","text",label);return{id:clusters.next(base),role:"system",contentType:"text",text:label,rawAnthropicMessage:m3}}function systemMessageText(m3){const text=typeof m3.content==="string"?m3.content:m3.content.map(b3=>b3.type==="text"?b3.text:`[${b3.type}]`).join("\n");return text.length>0?text:"[system]"}function systemMessageMark(m3){if(typeof m3.content==="string")return void 0;let mark;for(const b3 of m3.content)if(b3.cache_control)mark=b3.cache_control;return mark}function safeStringify(v3){try{return JSON.stringify(v3??{})}catch{return"{}"}}var FORMS=[{open:"<think>\n",close:"\n</think>"},{open:"<thinking>\n",close:"\n</thinking>"},{open:"```thinking\n",close:"\n```"}];function splitDemotedThinking(content){let rest=content;const parts=[];for(;;){let matched=false;for(const form of FORMS){if(!rest.startsWith(form.open))continue;const end=rest.indexOf(form.close,form.open.length);if(end<0)continue;const inner=rest.slice(form.open.length,end);if(inner.length===0)continue;parts.push(inner);rest=rest.slice(end+form.close.length);if(rest.startsWith("\n"))rest=rest.slice(1);matched=true;break}if(!matched)break}if(parts.length===0)return null;return{reasoning:parts.join("\n"),text:rest}}function parseDataUrl(url){const m3=/^data:([^;,]+)(?:;base64)?,(.+)$/i.exec(url);if(!m3)return void 0;return{mediaType:m3[1],base64:m3[2]}}function imageFingerprintsOfParts(parts){const out=[];for(const part of parts){if(!part||typeof part!=="object")continue;const p2=part;if(p2.type!=="image_url")continue;const url=typeof p2.image_url?.url==="string"?p2.image_url.url:void 0;if(!url)continue;const parsed=parseDataUrl(url);out.push(imageMediaFingerprint(parsed?parsed.base64:url))}return out}function openaiToCore(body){const msgs=[];const systemParts=[];const clusters=new ClusterCounter;const toolNames=new Map;for(const[wireIndex,m3]of body.messages.entries()){const before=msgs.length;switch(m3.role){case"system":case"developer":{if(msgs.length===0){systemParts.push(stringContent(m3.content));break}const base=deriveCanonicalMessageId(m3.role,"text",stringContent(m3.content));msgs.push({id:clusters.next(base),role:"system",contentType:"text",text:stringContent(m3.content),originalRole:m3.role,rawOpenaiMessage:m3});break}case"user":{if(typeof m3.content==="string"||m3.content==null||!Array.isArray(m3.content)){const base=deriveCanonicalMessageId("user","text",typeof m3.content==="string"?m3.content:"");msgs.push({id:clusters.next(base),role:"user",contentType:"text",text:typeof m3.content==="string"?m3.content:""});break}let lastTextCore=null;let leadingOpaque=[];let sawText=false;for(const part of m3.content){if(typeof part==="string"){const base=deriveCanonicalMessageId("user","text",part);lastTextCore={id:clusters.next(base),role:"user",contentType:"text",text:part};msgs.push(lastTextCore);sawText=true;continue}if(part?.type==="text"&&typeof part.text==="string"){const base=deriveCanonicalMessageId("user","text",part.text);lastTextCore={id:clusters.next(base),role:"user",contentType:"text",text:part.text};msgs.push(lastTextCore);sawText=true;continue}if(part?.type==="image_url"){const url=part.image_url?.url;const parsed=typeof url==="string"?parseDataUrl(url):void 0;const base=deriveCanonicalMessageId("user","text",CANONICAL_IMAGE_TEXT,{mediaFingerprint:imageMediaFingerprint(parsed?parsed.base64:typeof url==="string"?url:"")});msgs.push({id:clusters.next(base),role:"user",contentType:"text",text:CANONICAL_IMAGE_TEXT,imagePart:true,rawOpenaiContent:part,...parsed?{imageMediaType:parsed.mediaType,imageBase64:parsed.base64}:{}});continue}if(lastTextCore){lastTextCore.rawOpenaiContentParts=[...lastTextCore.rawOpenaiContentParts??[],part]}else{leadingOpaque=[...leadingOpaque,part]}}if(leadingOpaque.length>0){if(sawText&&msgs.length>0){const firstTextCore=msgs.find((c,i)=>i>=before&&c.role==="user"&&c.contentType==="text"&&!c.rawOpenaiContent);const host=firstTextCore??msgs[msgs.length-1];host.rawOpenaiContentParts=[...leadingOpaque,...host.rawOpenaiContentParts??[]]}else{const base=deriveCanonicalMessageId("user","text","",{mediaFingerprint:imageFingerprintsOfParts(leadingOpaque).join(",")||void 0});msgs.push({id:clusters.next(base),role:"user",contentType:"text",text:"",rawOpenaiContentParts:leadingOpaque})}}break}case"assistant":{const rawReasoning=m3.reasoning_content;const fieldPresent=typeof rawReasoning==="string";const fieldReasoning=fieldPresent?rawReasoning:"";let reasoning=fieldReasoning;let text=stringContent(m3.content);if(!reasoning){const split=splitDemotedThinking(text);if(split){reasoning=split.reasoning;text=split.text}}const blankEcho=fieldPresent&&reasoning.length===0;if(reasoning){const base=deriveCanonicalMessageId("assistant","reasoning",reasoning);msgs.push({id:clusters.next(base),role:"assistant",contentType:"reasoning",text:reasoning,reasoningContent:reasoning})}if(text){const base=deriveCanonicalMessageId("assistant","text",text);msgs.push({id:clusters.next(base),role:"assistant",contentType:"text",text,...blankEcho?{reasoningPresent:true}:{}})}if(Array.isArray(m3.tool_calls)){for(const tc of m3.tool_calls){const base=deriveCanonicalMessageId("assistant","tool-call",canonicalToolArgs(tc.function.arguments??""),{toolName:tc.function.name});msgs.push({id:clusters.next(base),role:"assistant",contentType:"tool-call",toolName:tc.function.name,toolCallId:tc.id,text:tc.function.arguments??"",...blankEcho?{reasoningPresent:true}:{}});toolNames.set(tc.id,tc.function.name)}}break}case"tool":{const base=deriveCanonicalMessageId("tool","tool-result",stringContent(m3.content),{toolName:m3.name||toolNames.get(m3.tool_call_id??"")});const name=m3.name||toolNames.get(m3.tool_call_id??"");msgs.push({id:clusters.next(base),role:"tool",contentType:"tool-result",toolCallId:m3.tool_call_id??"",text:stringContent(m3.content),...name?{toolName:name}:{}});break}}for(let k2=before;k2<msgs.length;k2++){msgs[k2].wireIndex=wireIndex}}return{msgs,systemText:systemParts.join("\n\n")}}function stringContent(content){if(content==null)return"";if(typeof content==="string")return content;if(Array.isArray(content)){return content.map(p2=>typeof p2==="string"?p2:p2.type==="text"?p2.text??"":"").join("\n")}return""}var OPAQUE_ITEM_TYPES=new Set(["additional_tools","mcp_list_tools"]);function isOpaqueItem(item){return OPAQUE_ITEM_TYPES.has(item.type)}var EASY_INPUT_ROLES=new Set(["user","assistant","system","developer"]);function normalizeEasyInputItem(item){if(typeof item.type==="string")return item;if(EASY_INPUT_ROLES.has(String(item.role))){return{...item,type:"message"}}return item}function shouldDropAllReasoning(){return(process.env.ACP_REASONING_KEEP??"").trim().toLowerCase()==="none"}function partText(part){if(part.type==="input_text"||part.type==="output_text"){return typeof part.text==="string"?part.text:""}return""}function messageContent(content){return typeof content==="string"?content:content.map(partText).join("\n")}function userDisplayText(content,text){if(typeof content==="string")return text;const hasImage=content.some(part=>part.type==="input_image");const hasTextPart=content.some(part=>part.type==="input_text"||part.type==="output_text");return!text||hasImage&&!hasTextPart?"[image]":text}function reasoningText(item){const fromParts=(parts,type)=>{if(!Array.isArray(parts))return"";const texts=[];for(const part of parts){if(part&&typeof part==="object"&&"type"in part&&"text"in part){const rec=part;if(rec.type===type&&typeof rec.text==="string")texts.push(rec.text)}}return texts.join("\n")};const content="content"in item?item.content:void 0;const summary="summary"in item?item.summary:void 0;return fromParts(content,"reasoning_text")||fromParts(summary,"summary_text")}function responsesToCore(body){const msgs=[];const systemParts=[];const preamble=[];const customToolCallIds=new Set;const layout=[];let droppedReasoning=0;const clusters=new ClusterCounter;const toolNames=new Map;let idx=0;if(typeof body.instructions==="string"&&body.instructions.trim())systemParts.push(body.instructions);if(typeof body.input==="string"){const id=clusters.next(deriveCanonicalMessageId("user","text",body.input));msgs.push({id,role:"user",contentType:"text",text:body.input});return{msgs,systemParts,preamble,customToolCallIds,layout,droppedReasoning,stringInput:{original:body.input,coreId:id}}}let sysDevHead=true;for(const[wireIndex,raw]of body.input.entries()){const item=normalizeEasyInputItem(raw);let coreId;const before=msgs.length;if(isOpaqueItem(item))preamble.push(item);switch(item.type){case"reasoning":{if(shouldDropAllReasoning()){droppedReasoning++;continue}const text=reasoningText(item);const rid=text.length>0?text:canonicalOpaqueSeed(item);coreId=clusters.next(deriveCanonicalMessageId("assistant","reasoning",rid));msgs.push({id:coreId,role:"assistant",contentType:"reasoning",text:rid,rawResponsesItem:item});break}case"message":{const message=item;const text=messageContent(message.content);if(message.role==="system"||message.role==="developer"){if(sysDevHead){systemParts.push(text);idx++;continue}const midBase=deriveCanonicalMessageId(message.role,"text",text);msgs.push({id:clusters.next(midBase),role:"system",contentType:"text",text,originalRole:message.role,rawResponsesItem:item});break}else if(message.role==="user"||message.role==="assistant"&&text){const role2=message.role;const splittable=role2==="user"&&Array.isArray(message.content)&&message.content.length>1&&message.content.every(part=>typeof part==="object"&&part!==null&&(part.type==="input_text"||part.type==="output_text"||part.type==="input_image"));if(splittable){for(const rawPart of message.content){const part=typeof rawPart==="object"&&rawPart!==null?rawPart:void 0;if(!part)continue;if((part.type==="input_text"||part.type==="output_text")&&typeof part.text==="string"&&part.text.length>0){const base=deriveCanonicalMessageId("user","text",part.text);msgs.push({id:clusters.next(base),role:"user",contentType:"text",text:part.text})}else if(part.type==="input_image"&&typeof part.image_url==="string"){const image=parseDataUrl(part.image_url);const base=deriveCanonicalMessageId("user","text",CANONICAL_IMAGE_TEXT,{mediaFingerprint:imageMediaFingerprint(image?image.base64:part.image_url)});msgs.push({id:clusters.next(base),role:"user",contentType:"text",text:CANONICAL_IMAGE_TEXT,imagePart:true,rawResponsesItem:item,...image?{imageMediaType:image.mediaType,imageBase64:image.base64}:{}})}}break}let effText=text;if(role2==="assistant"){const split=splitDemotedThinking(text);if(split){msgs.push({id:clusters.next(deriveCanonicalMessageId("assistant","reasoning",split.reasoning)),role:"assistant",contentType:"reasoning",text:split.reasoning,rawResponsesItem:item});effText=split.text}}const hasImage=Array.isArray(message.content)&&message.content.some(part=>part.type==="input_image");if(effText||role2==="user"&&hasImage){const displayText=role2==="user"?userDisplayText(message.content,effText):effText;const mediaFingerprint=Array.isArray(message.content)?message.content.flatMap(part=>{if(part?.type==="input_image"&&typeof part.image_url==="string"){const raw2=part.image_url;const decoded=parseDataUrl(raw2);return[imageMediaFingerprint(decoded?decoded.base64:raw2)]}return[]}).join(",")||void 0:void 0;coreId=clusters.next(deriveCanonicalMessageId(role2,"text",displayText,{mediaFingerprint}));const imageUrl=Array.isArray(message.content)?message.content.find(part=>part.type==="input_image"&&typeof part.image_url==="string")?.image_url:void 0;const image=typeof imageUrl==="string"?parseDataUrl(imageUrl):void 0;msgs.push({id:coreId,role:role2,contentType:"text",text:displayText,rawResponsesItem:item,...image?{imageMediaType:image.mediaType,imageBase64:image.base64}:{}})}}break}case"function_call":{const call=item;coreId=clusters.next(deriveCanonicalMessageId("assistant","tool-call",canonicalToolArgs(call.arguments??""),{toolName:call.name}));msgs.push({id:coreId,role:"assistant",contentType:"tool-call",toolName:call.name,toolCallId:call.call_id,text:call.arguments??"",rawResponsesItem:item});toolNames.set(call.call_id,call.name);break}case"function_call_output":{const output=item;const text=typeof output.output==="string"?output.output:JSON.stringify(output.output);coreId=clusters.next(deriveCanonicalMessageId("tool","tool-result",text,{toolName:toolNames.get(output.call_id)}));const name=toolNames.get(output.call_id);msgs.push({id:coreId,role:"tool",contentType:"tool-result",toolCallId:output.call_id,text,...name?{toolName:name}:{},rawResponsesItem:item});break}case"computer_call":case"computer_call_output":case"file_search_call":case"web_search_call":case"image_generation_call":case"code_interpreter_call":case"mcp_call":{const rid=canonicalOpaqueSeed(item);coreId=clusters.next(deriveCanonicalMessageId("assistant","responses-call",rid));msgs.push({id:coreId,role:"assistant",contentType:"reasoning",text:rid,rawResponsesItem:item});break}case"custom_tool_call":{const ctc=item;const callId=ctc.call_id??`call_${idx}`;customToolCallIds.add(callId);const argText=ctc.input??ctc.arguments??"";coreId=clusters.next(deriveCanonicalMessageId("assistant","tool-call",argText,{toolName:ctc.name??"custom"}));msgs.push({id:coreId,role:"assistant",contentType:"tool-call",toolName:ctc.name??"custom",toolCallId:callId,text:argText,rawResponsesItem:item});toolNames.set(callId,ctc.name??"custom");break}case"custom_tool_call_output":{const ctco=item;const callId=ctco.call_id??`call_${idx}`;customToolCallIds.add(callId);const outText=typeof ctco.output==="string"?ctco.output:JSON.stringify(ctco.output??"");coreId=clusters.next(deriveCanonicalMessageId("tool","tool-result",outText,{toolName:toolNames.get(callId)}));const name=toolNames.get(callId);msgs.push({id:coreId,role:"tool",contentType:"tool-result",toolCallId:callId,text:outText,...name?{toolName:name}:{},rawResponsesItem:item});break}default:if(!isOpaqueItem(item))preamble.push(item);break}for(let k2=before;k2<msgs.length;k2++){msgs[k2].wireIndex=wireIndex}const role=item.role;const isSysDevMsgItem=(item.type===void 0||item.type==="message")&&(role==="system"||role==="developer");if(!isSysDevMsgItem&&item.type!=="additional_tools"&&item.type!=="mcp_list_tools")sysDevHead=false;const produced=msgs.slice(before).map(m3=>m3.id);layout.push({original:item,...produced.length>0?{coreId:produced[0]}:{},...produced.length>1?{coreIds:produced}:{}});idx++}return{msgs,systemParts,preamble,customToolCallIds,layout,droppedReasoning}}function createSubagentNamespaces(){const anchors=new Map;return{namespaceFor(identityValue,instructions){if(typeof instructions!=="string"||instructions.trim().length===0)return identityValue;const fp=hashId2(instructions);const anchor=anchors.get(identityValue);if(anchor===void 0){anchors.set(identityValue,fp);return identityValue}return anchor===fp?identityValue:`${identityValue}|sub:${fp}`}}}var defaultNamespaces=createSubagentNamespaces();function detectWireFormat(payload){if(payload===null||typeof payload!=="object")return void 0;const p2=payload;if(Array.isArray(p2.contents))return"google";if(Array.isArray(p2.input))return"responses";const messages=p2.messages;if(!Array.isArray(messages))return void 0;if("system"in p2||"anthropic_version"in p2)return"anthropic";for(const m3 of messages){if(m3===null||typeof m3!=="object")continue;const c=m3.content;if(Array.isArray(c)){for(const b3 of c){if(b3&&typeof b3==="object"&&typeof b3.type==="string"){if(b3.type==="tool_use"||b3.type==="tool_result"||b3.type==="thinking")return"anthropic";if(b3.type==="text"&&"cache_control"in b3)return"anthropic"}}}if(Array.isArray(m3.tool_calls))return"openai";if(m3.role==="tool"&&typeof m3.tool_call_id==="string")return"openai";if(m3.role==="system"||m3.role==="developer")return"openai"}return"openai"}var DEFAULT_MAX_FUTURE_SKEW_MS=2*60*1e3;var DEFAULT_RECENT_CHECKPOINT_WINDOW_MS=10*60*1e3;var MAX_CHECKPOINT_CHARS=512;var TAG_OPEN="<bili-chain ";var TAG_CLOSE="/>";var ATTRS=["v","processor","issued-at","request-id","digest"];function validAttrValue(name,raw){switch(name){case"v":return/^\d+$/.test(raw)&&Number(raw)>=1;case"issued-at":return/^\d{1,16}$/.test(raw);case"processor":return/^[A-Za-z0-9._-]{1,64}$/.test(raw);case"request-id":return/^[A-Za-z0-9._:-]{1,64}$/.test(raw);case"digest":return/^sha256:[0-9a-f]{64}$/.test(raw)}}function parseChainCheckpoint(text){if(typeof text!=="string"||text.length===0||text.length>MAX_CHECKPOINT_CHARS)return null;if(!text.startsWith(TAG_OPEN)||!text.endsWith(TAG_CLOSE))return null;const inner=text.slice(TAG_OPEN.length,-TAG_CLOSE.length);const found={};for(const token of inner.split(/\s+/)){const m3=/^([a-z][a-z0-9-]*)="([^"]*)"$/.exec(token);if(!m3)return null;const name=m3[1];if(!ATTRS.includes(name))return null;if(Object.hasOwn(found,name))return null;found[name]=m3[2]}for(const attr of ATTRS){const raw=found[attr];if(raw===void 0||!validAttrValue(attr,raw))return null}return{v:Number(found.v),processor:found.processor,issuedAt:Number(found["issued-at"]),requestId:found["request-id"],digest:found.digest}}function stripEmbeddedChainCarriers(parsed,wire){if(parsed===null||typeof parsed!=="object"||Array.isArray(parsed))return 0;const body=parsed;let stripped=0;if(wire==="google"){const contents=body.contents;if(!Array.isArray(contents))return 0;for(let i=contents.length-1;i>=0;i--){const c=contents[i];if(!c||typeof c!=="object"||Array.isArray(c))continue;const ct2=c;const role=typeof ct2.role==="string"?ct2.role:"user";if(role!=="user"&&role!=="model")continue;const parts=ct2.parts;if(!Array.isArray(parts))continue;let removed=0;for(let j3=parts.length-1;j3>=0;j3--){const p2=parts[j3];if(p2&&typeof p2==="object"&&!Array.isArray(p2)&&Object.keys(p2).length===1&&typeof p2.text==="string"){if(parseChainCheckpoint(p2.text)){parts.splice(j3,1);removed++}}}if(removed>0){if(parts.length===0)contents.splice(i,1);stripped+=removed}}return stripped}if(wire==="responses"){const input=body.input;if(!Array.isArray(input))return 0;for(let i=input.length-1;i>=0;i--){const item=input[i];if(!item||typeof item!=="object"||Array.isArray(item))continue;const it2=item;if(it2.type!=="message")continue;const role=typeof it2.role==="string"?it2.role:"";if(role!=="user"&&role!=="assistant")continue;const content=it2.content;if(typeof content==="string"){if(parseChainCheckpoint(content)){input.splice(i,1);stripped++}continue}if(!Array.isArray(content))continue;let removed=0;for(let j3=content.length-1;j3>=0;j3--){const p2=content[j3];if(p2&&typeof p2==="object"&&!Array.isArray(p2)){const po2=p2;if(po2.type==="input_text"&&typeof po2.text==="string"&&Object.keys(po2).length===2&&parseChainCheckpoint(po2.text)){content.splice(j3,1);removed++}}}if(removed>0){if(content.length===0)input.splice(i,1);stripped+=removed}}return stripped}const messages=body.messages;if(!Array.isArray(messages))return 0;for(let i=messages.length-1;i>=0;i--){const rec=messages[i];if(!rec||typeof rec!=="object"||Array.isArray(rec))continue;const m3=rec;if(m3.role!=="user"&&m3.role!=="assistant")continue;const content=m3.content;if(typeof content==="string"){if(parseChainCheckpoint(content)){messages.splice(i,1);stripped++}continue}if(!Array.isArray(content))continue;let removed=0;for(let j3=content.length-1;j3>=0;j3--){const p2=content[j3];if(p2&&typeof p2==="object"&&!Array.isArray(p2)){const po2=p2;if(po2.type==="text"&&typeof po2.text==="string"&&Object.keys(po2).length===2&&parseChainCheckpoint(po2.text)){content.splice(j3,1);removed++}}}if(removed>0){if(content.length===0)messages.splice(i,1);stripped+=removed}}return stripped}var ZERO_DIGEST="sha256:"+"0".repeat(64);function buildAcplikeName(){const cores=["acp","apc","cap","cpa","pac","pca"];const ci2=ch=>`[${ch}${ch.toUpperCase()}]`;const attestedDrift=["[aA][cC][cC][eE][sS][sS][pP]","[aA][cC][aA][cC][pP]","[aA][cC][bB]"];const fourLetter=new Set;const threeLetter=new Set;for(const c of cores){threeLetter.add(ci2(c.charAt(0))+ci2(c.charAt(1))+ci2(c.charAt(2)));for(let pos=0;pos<=c.length;pos++){fourLetter.add(c.slice(0,pos).split("").map(ci2).join("")+"[aAcCpPiI]"+c.slice(pos).split("").map(ci2).join(""))}}return[...attestedDrift,...fourLetter,...threeLetter].join("|")}var ACP_NAME_ALT=`(?:${buildAcplikeName()})`;var NAME=ACP_NAME_ALT;var REF_TOKEN="m\\d{4,}";var REFS_RUN=REF_TOKEN+"(?:\\s*[\\u2013\\u2014,\\-]?\\s*"+REF_TOKEN+")*";var REFS_ONLY=new RegExp("^\\s*"+REFS_RUN+"\\s*$");var PENDING_REF_SPAN=new RegExp("^\\s*"+REFS_RUN+"(?:\\s*[\\u2013\\u2014,\\-]?\\s*(?:m\\d{0,3})?)?\\s*$");var PAIRED_BODY="\\s*(?:"+REFS_RUN+")?\\s*";var PAIRED=new RegExp("<"+NAME+"(?:\\s[^<>]*)?>("+PAIRED_BODY+")<\\/"+NAME+">");var ORPHAN_REF_CLOSE=new RegExp("(?<![\\w>])"+REFS_RUN+"\\s*<\\/"+NAME+"(?=[\\s>])[^<>]{0,32}>");var ORPHAN_RUN_BEFORE=new RegExp("(?<![\\w>])"+REFS_RUN+"\\s*$");var LONE_OPEN=new RegExp("<"+NAME+"(?:\\s[^<>]*)?>");var LONE_CLOSE=new RegExp("<\\/"+NAME+"(?=[\\s>])[^<>]{0,32}>");var DEGEN_PAIR=new RegExp("<"+NAME+"(?:\\s[^<>]*)?>\\s*m\\d{4,}\\s*<\\/[^<>]{1,32}>","g");var SELF_CLOSE=new RegExp("<"+NAME+"(?:\\s[^<>]*)?\\/>");var PARTIAL_TAIL=new RegExp("(<"+NAME+"\\s[^<>]*|<"+NAME+"\\s*=\\s*[^<>]*|<\\/"+NAME+"(?:\\s[^<>]{0,32})?|<\\/?[aAcCpPiI]*(?:/)?|(?<![\\w>])\\s*"+REFS_RUN+"\\s*<[^<>]*|(?<![\\w>])\\s*"+REFS_RUN+"(?:\\s*[\\u2013\\u2014,\\-]?\\s*(?:m\\d{0,3})?)?\\s*|(?<![\\w>])\\s*m\\d{0,3})$");var TRUNC_OPEN=new RegExp("<"+NAME+"\\s[^<>]*$|<"+NAME+"\\s*=\\s*[^<>]*$");var TRUNC_CLOSE=new RegExp("<\\/"+NAME+"(?:\\s[^<>]{0,32})?$");var TRUNC_REF_CLOSE=new RegExp("m\\d{4,}\\s*\\x3c\\/([a-zA-Z]{0,32})$");var DEAD_REF_CLOSE=new RegExp("(?<![\\w>])m\\d{4,}\\s*\\x3c\\/[a-zA-Z]{0,32}(?![a-zA-Z])(?![^\\x3c\\x3e]{0,32}\\x3e)","g");var BROKEN_ATTRS=new RegExp("<"+NAME+"\\s[^<>]*(?=<)");var MANGLED_OPEN=new RegExp("<"+NAME+"\\s*=\\s*[^<>]*>");var DEFINITE_TAIL=new RegExp("^<"+NAME+"\\s|^<"+NAME+"=|^<\\/"+NAME);var OPEN_WITH_ATTRS=new RegExp("^<"+NAME+"\\s");var CLOSE_NAME_ANCHORED=new RegExp("^"+NAME);var MARKER_HEAD=new RegExp("^\\p{So}(?:[ \\t])?\\[ACP\\]","u");var MARKER_LINE=new RegExp("^\\p{So}(?:[ \\t])?\\[ACP\\][^\\n]*\\n?","gmu");function stripMarkerLines(text){return text.replace(MARKER_LINE,"")}var RENDER_TAG_DETECT=new RegExp("<\\/?"+NAME+"(?=[\\s>])|\\\\u003c\\/?"+NAME+"(?=[\\s>\\\\])|<"+NAME+"\\s*\\/|\\\\u003c"+NAME+"\\s*\\/");var BROAD_TAG_HEAD_TAIL=new RegExp("<\\/?[A-Za-z0-9]{0,16}$");var RAW_WS="(?:\\\\[a-z]|\\s|\\\\)*";var TC_PARAM_REF_RAW=new RegExp(`\\x3c(?:antml:)?parameter(?:\\s*=\\s*["']?ref["']?|\\s+name\\s*=\\s*["']ref["'])?[^<>]*\\x3e`+RAW_WS+"m\\d{4,}"+RAW_WS+"\\x3c\\/(?:antml:)?parameter","i");var CHAIN_OPEN_ESCAPED="\\u003c"+TAG_OPEN.slice(1);function reEscape(s3){return s3.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function prefixAlts(s3,minLen){const out=[];for(let k2=minLen;k2<s3.length;k2++)out.push(reEscape(s3.slice(0,k2)));return out}var CHAIN_PARTIAL_TAIL=new RegExp("("+[...new Set([...prefixAlts(TAG_OPEN,1),reEscape(TAG_OPEN),...prefixAlts(CHAIN_OPEN_ESCAPED,1),reEscape(CHAIN_OPEN_ESCAPED)])].join("|")+")$");var HEAD_PREFIX_TAIL=new RegExp("(?:^|\n)("+[...new Set([...prefixAlts(CODEX_FORGED_HANDOFF_HEADER,1),...prefixAlts(FORGED_SUMMARY_HEADER,1)])].join("|")+")$");var TAG_PARTIAL_TAIL=new RegExp("(<"+NAME+"\\s[^<>]*|<\\/"+NAME+"(?:\\s[^<>]{0,32})?|<\\/?[aAcCpPiI]*(?:/)?)$");var PANEL_BOX_TOP="\u256D";var PANEL_BOX_TITLE="ACP Context Analysis";var PANEL_BOX_FOOTER="Tag visibility: tags injected to LLM only (deep copy), not persisted in session, not shown in terminal.";var PANEL_FALLBACK_HEADER="\u{1F4CA} ACP status";var CACHE_REPORT_OPEN="[acp-cache]";var CACHE_REPORT_CLOSE="[/acp-cache]";var RULE_REPORT_OPEN="[acp-rule]";var RULE_REPORT_CLOSE="[/acp-rule]";function wrapCacheReport(report){return`${CACHE_REPORT_OPEN}
|
|
131
131
|
${report}
|
|
132
132
|
${CACHE_REPORT_CLOSE}`}function wrapRuleReport(report){return`${RULE_REPORT_OPEN}
|
|
133
133
|
${report}
|