@adaline/open-router 1.6.0 → 1.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/configs/chat-model/base.config.chat-model.open-router.ts","../../../../packages/types/src/message/roles.ts","../../../../packages/types/src/message/content/image-content.ts","../../../../packages/types/src/message/content/pdf-content.ts","../../../../packages/types/src/message/content/reasoning-content.ts","../../../../packages/types/src/message/content/text-content.ts","../../../../packages/types/src/message/content/tool-call-content.ts","../../../../packages/types/src/message/content/tool-response-content.ts","../../../../packages/types/src/message/content/content.ts","../../../../packages/types/src/message/message.ts","../../../../packages/types/src/chat/chat-response.ts","../../../../packages/types/src/config/config.ts","../../../../packages/types/src/config/mcp.config.ts","../../../../packages/types/src/config/response-schema.config.ts","../../../../packages/types/src/embedding/embedding-requests.ts","../../../../packages/types/src/embedding/embedding-response.ts","../../../../packages/types/src/errors/gateway-base.error.ts","../../../../packages/types/src/pricing/pricing-tiers.ts","../../../../packages/types/src/tool/function-tool.ts","../../../../packages/types/src/tool/tool.ts","../../../../packages/types/src/utils/create-message.ts","../../../../packages/provider/src/errors/provider.error.ts","../../../../packages/provider/src/errors/model-response.error.ts","../../../../packages/provider/src/errors/invalid-model-request.error.ts","../../../../packages/provider/src/errors/invalid-config.error.ts","../../../../packages/provider/src/errors/invalid-messages.error.ts","../../../../packages/provider/src/errors/invalid-tools.error.ts","../../../../packages/provider/src/types/config/multi-string-config-item.ts","../../../../packages/provider/src/types/config/object-schema-config-item.ts","../../../../packages/provider/src/types/config/range-config-item.ts","../../../../packages/provider/src/types/config/select-boolean-config-item.ts","../../../../packages/provider/src/types/config/select-string-config-item.ts","../../../../packages/provider/src/types/config/config-item.ts","../../../../packages/provider/src/model/chat-model/chat-model.schema.v1.ts","../../../../packages/provider/src/types/headers.ts","../../../../packages/provider/src/types/params.ts","../../../../packages/provider/src/types/url.ts","../../../../packages/provider/src/utils/common-config.def.chat-model.ts","../../../../packages/provider/src/utils/remove-undefined-entries.ts","../../../../packages/provider/src/utils/base64.ts","../../../../packages/provider/src/utils/url.ts","../src/configs/chat-model/common.config.chat-model.open-router.ts","../src/configs/configs.openai-router.ts","../src/provider/provider.open-router.ts","../src/models/pricing.json","../src/models/chat-models/types/roles.chat-model.open-router.ts","../src/models/chat-models/types/modalities.chat-model.open-router.ts","../src/models/chat-models/types/response.chat-model.open-router.ts","../src/models/chat-models/types/request.chat-model.open-router.ts","../src/models/chat-models/base-chat-model.open-router.ts","../src/models/chat-models/base-chat-model-schema.open-router.ts"],"names":["SystemRoleLiteral","UserRoleLiteral","AssistantRoleLiteral","ToolRoleLiteral","RoleLiterals","RoleEnum","z","PartialRoleLiterals","PartialRoleEnum","ImageModalityLiteral","Base64ImageContentTypeLiteral","Base64ImageContentMediaTypeLiterals","Base64ImageContentValue","UrlImageContentTypeLiteral","UrlImageContentValue","ImageContentValue","ImageContentDetails","ImageContentDetailsLiteral","ImageContent","Metadata","PdfModalityLiteral","Base64PdfContentTypeLiteral","Base64PdfContentValue","UrlPdfContentTypeLiteral","UrlPdfContentValue","PdfContentValue","PdfContent","ReasoningModalityLiteral","PartialReasoningModalityLiteral","ReasoningContentTypeLiteral","RedactedReasoningContentTypeLiteral","ReasoningContentValue","RedactedReasoningContentValue","ReasoningContentValueUnion","ReasoningContent","PartialReasoningContentValue","PartialReasoningContentValueUnion","PartialReasoningContent","TextModalityLiteral","TextContent","PartialTextModalityLiteral","PartialTextContent","ToolCallModalityLiteral","ToolCallContent","PartialToolCallModalityLiteral","PartialToolCallContent","ToolResponseModalityLiteral","ToolResponseContent","PartialToolResponseModalityLiteral","PartialToolResponseContent","ModalityLiterals","ModalityEnum","Content","TextContentMetadata","ImageContentMetadata","PdfContentMetadata","ToolCallContentMetadata","ToolResponseContentMetadata","ReasoningContentMetadata","PartialModalityLiterals","PartialContent","PartialTextContentMetadata","PartialToolCallContentMetadata","PartialReasoningContentMetadata","PartialToolResponseContentMetadata","Message","Role","MessageMetadata","PartialMessage","ChatUsage","ChatBaseLogProb","ChatLogProb","ChatLogProbs","PartialChatUsage","Config","McpServerToolConfiguration","McpServer","url","ResponseSchemaTypes","ResponseSchemaTypesLiteral","ResponseSchemaProperty","ResponseSchemaStructure","ResponseSchema","EmbeddingTextModalityLiteral","EmbeddingTokenModalityLiteral","EmbeddingModalityLiterals","TextEmbeddingRequests","FloatEmbeddingLiteral","FloatEmbedding","Base64EmbeddingLiteral","Base64Embedding","EmbeddingsUsage","safeStringify","obj","seen","key","value","getErrorMessage","error","GatewayBaseErrorLiteral","GatewayBaseError","_GatewayBaseError","info","cause","name","ChatModelTokenPairPrice","ChatModelTokenTypePrice","ChatModelTokenRangePrice","t","data","ctx","tokenRanges","i","prev","curr","last","FunctionToolLiteral","FunctionParameterTypesLiteral","FunctionParameter","Function","ToolTypesLiteral","FunctionRequestRetry","FunctionRequestHttp","FunctionRequest","FunctionTool","ToolLiterals","Tool","FunctionToolMetadata","createTextContent","content","createToolCallContent","index","id","args","serverName","createPartialTextMessage","role","createPartialToolCallMessage","ProviderErrorLiteral","ProviderError","_ProviderError","ModelResponseErrorLiteral","ModelResponseError","_ModelResponseError","InvalidModelRequestErrorLiteral","InvalidModelRequestError","_InvalidModelRequestError","InvalidConfigErrorLiteral","InvalidConfigError","_InvalidConfigError","InvalidMessagesErrorLiteral","InvalidMessagesError","_InvalidMessagesError","InvalidToolsErrorLiteral","InvalidToolsError","_InvalidToolsError","MultiStringConfigItemTypeLiteral","MultiStringConfigItemDef","MultiStringConfigItemSchema","max","MultiStringConfigItem","__spreadValues","ObjectSchemaConfigItemTypeLiteral","ObjectSchemaConfigItemDef","RangeConfigItemTypeLiteral","RangeConfigItemDef","RangeConfigItemSchema","min","step","defaultValue","RangeConfigItem","SelectBooleanConfigItemTypeLiteral","SelectBooleanConfigItemDef","SelectBooleanConfigItemSchema","SelectBooleanConfigItem","SelectStringConfigItemTypeLiteral","SelectStringConfigItemDef","SelectStringConfigItemSchema","choices","SelectStringConfigItem","ConfigItemLiterals","ConfigItemDef","ChatModelSchema","Roles","Modalities","config","_a","_b","defKeys","schemaKeys","Url","TEMPERATURE","MAX_TOKENS","MAX_REASONING_TOKENS","STOP","TOP_A","TOP_P","TOP_K","MIN_P","FREQUENCY_PENALTY","PRESENCE_PENALTY","SEED","REPETITION_PENALTY","LOG_PROBS","TOP_LOG_PROBS","ECHO","RESPONSE_FORMAT","RESPONSE_FORMAT_WITH_SCHEMA","RESPONSE_SCHEMA","MCP_SERVERS","CHAT_CONFIG","removeUndefinedEntries","record","_","convertBase64ToUint8Array","getMimeTypeFromBase64","base64","urlWithoutTrailingSlash","temperature","mt","Wt","maxTokens","maxOutputTokens","stop","maxSequences","tt","topA","topK","topP","minP","frequencyPenalty","presencePenalty","repetitionPenalty","seed","logProbs","gt","topLogProbs","toolChoice","ht","responseFormat","ChatModelBaseConfigSchema","ChatModelBaseConfigDef","OpenRouterChatModelConfigs","ProviderLiteral","OpenRouter","BaseChatModelSchema","options","model","BaseChatModel","parsedOptions","BaseChatModelOptions","acc","j","pricing_default","OpenRouterChatModelRoles","Xe","Ye","J","en","OpenRouterChatModelRolesMap","OpenRouterChatModelModalities","B","W","D","N","OpenRouterChatModelModalitiesEnum","OpenRouterBaseLogProb","OpenRouterLogProb","OpenRouterToolCallsCompleteChatResponse","OpenRouterCompleteChatResponse","OpenRouterToolCallsStreamChatResponse","OpenRouterStreamChatResponse","OpenRouterChatRequestTool","OpenRouterChatRequestToolChoiceEnum","OpenRouterChatRequestToolChoiceFunction","OpenRouterChatRequestResponseFormat","OpenRouterChatRequestTextContent","OpenRouterChatRequestImageContent","OpenRouterChatRequestToolCallContent","OpenRouterChatRequestSystemMessage","OpenRouterChatRequestUserMessage","OpenRouterChatRequestAssistantMessage","OpenRouterChatRequestToolMessage","OpenRouterChatRequestMessage","OpenRouterChatRequest","modelSchema","pn","responseHeaders","messages","message","request","safeRequest","parsedRequest","modelName","_config","wt","toolCallMap","_content","c","me","cn","ue","assistantContent","toolCall","toolCallContent","toolResponse","tools","tool","_toolChoice","_parsedConfig","parsedConfig","transformedConfig","def","paramKey","paramValue","configToolChoice","parsedMessages","parsedMessage","U","textContent","toolCalls","imageContent","combinedContent","Z","parsedTool","lo","__async","resolve","transformedMessages","transformedTools","response","safe","parsedResponse","fo","Co","usage","_logProbs","logProb","topLogProb","chunk","buffer","__asyncGenerator","lines","newBuffer","currentIndex","newlineIndex","line","jsonStr","structuredLine","partialResponse","Zo","ho","headers","query","__yieldStar","sanitizedHeaders","Pt"],"mappings":"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","file":"index.mjs","sourcesContent":["import { z } from \"zod\";\n\nimport {\n frequencyPenalty,\n logProbs,\n maxTokens,\n presencePenalty,\n seed,\n stop,\n temperature,\n toolChoice,\n topLogProbs,\n topP,\n} from \"./common.config.chat-model.open-router\";\n\nconst ChatModelBaseConfigSchema = (maxOutputTokens: number, maxSequences: number) =>\n z.object({\n temperature: temperature.schema,\n maxTokens: maxTokens(maxOutputTokens).schema,\n stop: stop(maxSequences).schema,\n topP: topP.schema,\n frequencyPenalty: frequencyPenalty.schema,\n presencePenalty: presencePenalty.schema,\n seed: seed.schema.transform((value) => (value === 0 ? undefined : value)),\n logProbs: logProbs.schema,\n topLogProbs: topLogProbs.schema,\n toolChoice: toolChoice.schema,\n });\n\nconst ChatModelBaseConfigDef = (maxOutputTokens: number, maxSequences: number) =>\n ({\n temperature: temperature.def,\n maxTokens: maxTokens(maxOutputTokens).def,\n stop: stop(maxSequences).def,\n topP: topP.def,\n frequencyPenalty: frequencyPenalty.def,\n presencePenalty: presencePenalty.def,\n seed: seed.def,\n logProbs: logProbs.def,\n topLogProbs: topLogProbs.def,\n toolChoice: toolChoice.def,\n }) as const;\n\nexport { ChatModelBaseConfigDef, ChatModelBaseConfigSchema };\n","import { z } from \"zod\";\n\nconst SystemRoleLiteral = \"system\" as const;\nconst UserRoleLiteral = \"user\" as const;\nconst AssistantRoleLiteral = \"assistant\" as const;\nconst ToolRoleLiteral = \"tool\" as const;\n\nconst RoleLiterals = [SystemRoleLiteral, UserRoleLiteral, AssistantRoleLiteral, ToolRoleLiteral] as const;\nconst RoleEnum = z.enum(RoleLiterals);\ntype RoleEnumType = z.infer<typeof RoleEnum>;\n\nconst PartialRoleLiterals = [AssistantRoleLiteral] as const;\nconst PartialRoleEnum = z.enum(PartialRoleLiterals);\ntype PartialRoleEnumType = z.infer<typeof PartialRoleEnum>;\n\nexport {\n UserRoleLiteral,\n ToolRoleLiteral,\n SystemRoleLiteral,\n AssistantRoleLiteral,\n RoleEnum,\n RoleLiterals,\n PartialRoleEnum,\n PartialRoleLiterals,\n type RoleEnumType,\n type PartialRoleEnumType,\n};\n","import { z } from \"zod\";\n\nconst ImageModalityLiteral = \"image\" as const;\n\nconst Base64ImageContentTypeLiteral = \"base64\" as const;\nconst Base64ImageContentMediaTypeLiterals = [\"png\", \"jpeg\", \"webp\", \"gif\"] as const;\nconst Base64ImageContentValue = z.object({\n type: z.literal(Base64ImageContentTypeLiteral),\n base64: z.string(),\n mediaType: z.enum(Base64ImageContentMediaTypeLiterals),\n});\ntype Base64ImageContentValueType = z.infer<typeof Base64ImageContentValue>;\n\nconst UrlImageContentTypeLiteral = \"url\" as const;\nconst UrlImageContentValue = z.object({\n type: z.literal(UrlImageContentTypeLiteral),\n url: z.string(),\n});\ntype UrlImageContentValueType = z.infer<typeof UrlImageContentValue>;\n\nconst ImageContentValue = z.discriminatedUnion(\"type\", [Base64ImageContentValue, UrlImageContentValue]);\ntype ImageContentValueType = z.infer<typeof ImageContentValue>;\n\nconst ImageContentDetails = [\"low\", \"medium\", \"high\", \"auto\"] as const;\nconst ImageContentDetailsLiteral = z.enum(ImageContentDetails);\ntype ImageContentDetailsLiteralType = z.infer<typeof ImageContentDetailsLiteral>;\nconst ImageContent = <M extends z.ZodTypeAny = z.ZodUndefined>(Metadata: M = z.undefined() as M) =>\n z.object({\n modality: z.literal(ImageModalityLiteral),\n detail: ImageContentDetailsLiteral,\n value: ImageContentValue,\n metadata: Metadata,\n });\ntype ImageContentType<M extends z.ZodTypeAny = z.ZodUndefined> = z.infer<ReturnType<typeof ImageContent<M>>>;\n\nexport {\n Base64ImageContentValue,\n ImageContent,\n ImageContentDetails,\n ImageContentDetailsLiteral,\n ImageModalityLiteral,\n UrlImageContentValue,\n UrlImageContentTypeLiteral,\n Base64ImageContentTypeLiteral,\n Base64ImageContentMediaTypeLiterals,\n type Base64ImageContentValueType,\n type ImageContentDetailsLiteralType,\n type ImageContentType,\n type ImageContentValueType,\n type UrlImageContentValueType,\n};\n","import { z } from \"zod\";\n\nconst PdfModalityLiteral = \"pdf\" as const;\n\nconst Base64PdfContentTypeLiteral = \"base64\" as const;\nconst Base64PdfContentValue = z.object({\n type: z.literal(Base64PdfContentTypeLiteral),\n base64: z.string(),\n});\ntype Base64PdfContentValueType = z.infer<typeof Base64PdfContentValue>;\n\nconst UrlPdfContentTypeLiteral = \"url\" as const;\nconst UrlPdfContentValue = z.object({\n type: z.literal(UrlPdfContentTypeLiteral),\n url: z.string(),\n});\ntype UrlPdfContentValueType = z.infer<typeof UrlPdfContentValue>;\n\nconst PdfContentValue = z.discriminatedUnion(\"type\", [Base64PdfContentValue, UrlPdfContentValue]);\ntype PdfContentValueType = z.infer<typeof PdfContentValue>;\n\nconst PdfContent = <M extends z.ZodTypeAny = z.ZodUndefined>(Metadata: M = z.undefined() as M) =>\n z.object({\n modality: z.literal(PdfModalityLiteral),\n value: PdfContentValue,\n file: z.object({\n name: z.string(),\n id: z.string(),\n size: z.number().optional(),\n }),\n metadata: Metadata,\n });\ntype PdfContentType<M extends z.ZodTypeAny = z.ZodUndefined> = z.infer<ReturnType<typeof PdfContent<M>>>;\n\nexport {\n Base64PdfContentValue,\n PdfContent,\n PdfModalityLiteral,\n UrlPdfContentValue,\n UrlPdfContentTypeLiteral,\n Base64PdfContentTypeLiteral,\n type Base64PdfContentValueType,\n type PdfContentType,\n type PdfContentValueType,\n type UrlPdfContentValueType,\n};\n","import { z } from \"zod\";\n\nconst ReasoningModalityLiteral = \"reasoning\" as const;\nconst PartialReasoningModalityLiteral = \"partial-reasoning\" as const;\n\nconst ReasoningContentTypeLiteral = \"thinking\" as const;\nconst RedactedReasoningContentTypeLiteral = \"redacted\" as const;\n\nconst ReasoningContentValue = z.object({\n type: z.literal(ReasoningContentTypeLiteral),\n thinking: z.string(),\n signature: z.string(),\n});\ntype ReasoningContentValueType = z.infer<typeof ReasoningContentValue>;\n\nconst RedactedReasoningContentValue = z.object({\n type: z.literal(RedactedReasoningContentTypeLiteral),\n data: z.string()\n});\ntype RedactedReasoningContentValueType = z.infer<typeof RedactedReasoningContentValue>;\n\nconst ReasoningContentValueUnion = z.discriminatedUnion(\"type\", [ ReasoningContentValue, RedactedReasoningContentValue ]);\ntype ReasoningContentValueUnionType = z.infer<typeof ReasoningContentValueUnion>;\n\nconst ReasoningContent = <M extends z.ZodTypeAny = z.ZodUndefined>(Metadata: M = z.undefined() as M) =>\n z.object({\n modality: z.literal(ReasoningModalityLiteral),\n value: ReasoningContentValueUnion,\n metadata: Metadata,\n });\n\ntype ReasoningContentType<M extends z.ZodTypeAny = z.ZodUndefined> = z.infer<ReturnType<typeof ReasoningContent<M>>>;\n\nconst PartialReasoningContentValue = z.object({\n type: z.literal(ReasoningContentTypeLiteral),\n thinking: ReasoningContentValue.shape.thinking.optional(),\n signature: ReasoningContentValue.shape.signature.optional(),\n});\nconst PartialReasoningContentValueUnion = z.discriminatedUnion(\"type\", [ \n PartialReasoningContentValue, \n RedactedReasoningContentValue \n]);\n\nconst PartialReasoningContent = <M extends z.ZodTypeAny = z.ZodUndefined>(Metadata: M = z.undefined() as M) =>\n z.object({\n modality: z.literal(PartialReasoningModalityLiteral),\n value: PartialReasoningContentValueUnion,\n metadata: Metadata,\n });\ntype PartialReasoningContentType<M extends z.ZodTypeAny = z.ZodUndefined> = z.infer<ReturnType<typeof PartialReasoningContent<M>>>;\n\nexport {\n ReasoningContent,\n PartialReasoningContent,\n PartialReasoningModalityLiteral,\n ReasoningContentTypeLiteral,\n ReasoningContentValue,\n PartialReasoningContentValue,\n ReasoningContentValueUnion,\n PartialReasoningContentValueUnion,\n ReasoningModalityLiteral,\n RedactedReasoningContentTypeLiteral,\n RedactedReasoningContentValue,\n type PartialReasoningContentType,\n type ReasoningContentType,\n type ReasoningContentValueType,\n type ReasoningContentValueUnionType,\n type RedactedReasoningContentValueType,\n};\n","import { z } from \"zod\";\n\nconst TextModalityLiteral = \"text\" as const;\n\nconst TextContent = <M extends z.ZodTypeAny = z.ZodUndefined>(Metadata: M = z.undefined() as M) =>\n z.object({\n modality: z.literal(TextModalityLiteral),\n value: z.string(),\n metadata: Metadata,\n });\ntype TextContentType<M extends z.ZodTypeAny = z.ZodUndefined> = z.infer<ReturnType<typeof TextContent<M>>>;\nconst PartialTextModalityLiteral = \"partial-text\" as const;\n\nconst PartialTextContent = <M extends z.ZodTypeAny = z.ZodUndefined>(Metadata: M = z.undefined() as M) =>\n z.object({\n modality: z.literal(PartialTextModalityLiteral),\n value: z.string(),\n metadata: Metadata,\n });\ntype PartialTextContentType<M extends z.ZodTypeAny = z.ZodUndefined> = z.infer<ReturnType<typeof PartialTextContent<M>>>;\n\nexport {\n TextContent,\n PartialTextContent,\n TextModalityLiteral,\n PartialTextModalityLiteral,\n type TextContentType,\n type PartialTextContentType,\n};\n","import { z } from \"zod\";\n\nconst ToolCallModalityLiteral = \"tool-call\" as const;\n\nconst ToolCallContent = <M extends z.ZodTypeAny = z.ZodUndefined>(Metadata: M = z.undefined() as M) =>\n z.object({\n modality: z.literal(ToolCallModalityLiteral),\n index: z.number().int().nonnegative(),\n id: z.string().min(1),\n name: z.string().min(1),\n arguments: z.string(),\n serverName: z.string().optional(),\n metadata: Metadata,\n });\ntype ToolCallContentType<M extends z.ZodTypeAny = z.ZodUndefined> = z.infer<ReturnType<typeof ToolCallContent<M>>>;\nconst PartialToolCallModalityLiteral = \"partial-tool-call\" as const;\n\nconst PartialToolCallContent = <M extends z.ZodTypeAny = z.ZodUndefined>(Metadata: M = z.undefined() as M) =>\n z.object({\n modality: z.literal(PartialToolCallModalityLiteral),\n index: z.number().int().nonnegative(),\n id: z.string().optional(),\n name: z.string().optional(),\n arguments: z.string().optional(),\n serverName: z.string().optional(),\n metadata: Metadata,\n });\ntype PartialToolCallContentType<M extends z.ZodTypeAny = z.ZodUndefined> = z.infer<ReturnType<typeof PartialToolCallContent<M>>>;\n\nexport {\n PartialToolCallContent,\n PartialToolCallModalityLiteral,\n ToolCallContent,\n ToolCallModalityLiteral,\n type PartialToolCallContentType,\n type ToolCallContentType,\n};\n","import { z } from \"zod\";\n\nconst ToolResponseModalityLiteral = \"tool-response\" as const;\n\nconst ToolResponseContent = <M extends z.ZodTypeAny = z.ZodUndefined>(Metadata: M = z.undefined() as M) =>\n z.object({\n modality: z.literal(ToolResponseModalityLiteral),\n index: z.number().int().nonnegative(),\n id: z.string().min(1),\n name: z.string().min(1),\n data: z.string(),\n apiResponse: z\n .object({\n statusCode: z.number().int().nonnegative(),\n })\n .optional(),\n metadata: Metadata,\n });\ntype ToolResponseContentType<M extends z.ZodTypeAny = z.ZodUndefined> = z.infer<ReturnType<typeof ToolResponseContent<M>>>;\n\nconst PartialToolResponseModalityLiteral = \"partial-tool-response\" as const;\n\nconst PartialToolResponseContent = <M extends z.ZodTypeAny = z.ZodUndefined>(Metadata: M = z.undefined() as M) =>\n z.object({\n modality: z.literal(PartialToolResponseModalityLiteral),\n index: z.number().int().nonnegative(),\n id: z.string().optional(),\n name: z.string().optional(),\n data: z.string().optional(),\n apiResponse: z\n .object({\n statusCode: z.number().int().nonnegative(),\n })\n .optional(),\n metadata: Metadata,\n });\ntype PartialToolResponseContentType<M extends z.ZodTypeAny = z.ZodUndefined> = z.infer<ReturnType<typeof PartialToolResponseContent<M>>>;\n\nexport {\n PartialToolResponseContent,\n PartialToolResponseModalityLiteral,\n ToolResponseContent,\n ToolResponseModalityLiteral,\n type PartialToolResponseContentType,\n type ToolResponseContentType,\n};\n","import { z } from \"zod\";\n\nimport { ImageContent, ImageModalityLiteral } from \"./image-content\";\nimport { PdfContent, PdfModalityLiteral } from \"./pdf-content\";\nimport { PartialReasoningContent, PartialReasoningModalityLiteral, ReasoningContent, ReasoningModalityLiteral } from \"./reasoning-content\";\nimport { PartialTextContent, PartialTextModalityLiteral, TextContent, TextModalityLiteral } from \"./text-content\";\nimport { PartialToolCallContent, PartialToolCallModalityLiteral, ToolCallContent, ToolCallModalityLiteral } from \"./tool-call-content\";\nimport { PartialToolResponseContent, ToolResponseContent, ToolResponseModalityLiteral } from \"./tool-response-content\";\n\nconst ModalityLiterals = [\n TextModalityLiteral,\n ImageModalityLiteral,\n PdfModalityLiteral,\n ToolCallModalityLiteral,\n ToolResponseModalityLiteral,\n ReasoningModalityLiteral,\n] as const;\nconst ModalityEnum = z.enum(ModalityLiterals);\ntype ModalityEnumType = z.infer<typeof ModalityEnum>;\n\nconst Content = <\n TCM extends z.ZodTypeAny = z.ZodUndefined,\n ICM extends z.ZodTypeAny = z.ZodUndefined,\n PCM extends z.ZodTypeAny = z.ZodUndefined,\n CCM extends z.ZodTypeAny = z.ZodUndefined,\n RCM extends z.ZodTypeAny = z.ZodUndefined,\n TCCM extends z.ZodTypeAny = z.ZodUndefined,\n>(\n TextContentMetadata: TCM = z.undefined() as TCM,\n ImageContentMetadata: ICM = z.undefined() as ICM,\n PdfContentMetadata: PCM = z.undefined() as PCM,\n ToolCallContentMetadata: CCM = z.undefined() as CCM,\n ToolResponseContentMetadata: RCM = z.undefined() as RCM,\n ReasoningContentMetadata: TCCM = z.undefined() as TCCM\n) =>\n z.discriminatedUnion(\"modality\", [\n TextContent(TextContentMetadata),\n ImageContent(ImageContentMetadata),\n PdfContent(PdfContentMetadata),\n ToolCallContent(ToolCallContentMetadata),\n ToolResponseContent(ToolResponseContentMetadata),\n ReasoningContent(ReasoningContentMetadata),\n ]);\ntype ContentType<\n TCM extends z.ZodTypeAny = z.ZodUndefined,\n ICM extends z.ZodTypeAny = z.ZodUndefined,\n CCM extends z.ZodTypeAny = z.ZodUndefined,\n RCM extends z.ZodTypeAny = z.ZodUndefined,\n> = z.infer<ReturnType<typeof Content<TCM, ICM, CCM, RCM>>>;\n\nconst PartialModalityLiterals = [PartialTextModalityLiteral, PartialToolCallModalityLiteral, PartialReasoningModalityLiteral] as const;\nconst PartialModalityEnum = z.enum(PartialModalityLiterals);\ntype PartialModalityEnumType = z.infer<typeof PartialModalityEnum>;\n\nconst PartialContent = <\n TCM extends z.ZodTypeAny = z.ZodUndefined,\n CCM extends z.ZodTypeAny = z.ZodUndefined,\n RCM extends z.ZodTypeAny = z.ZodUndefined,\n TPCM extends z.ZodTypeAny = z.ZodUndefined,\n>(\n PartialTextContentMetadata: TCM = z.undefined() as TCM,\n PartialToolCallContentMetadata: CCM = z.undefined() as CCM,\n PartialReasoningContentMetadata: z.ZodTypeAny = z.undefined() as z.ZodTypeAny as RCM,\n PartialToolResponseContentMetadata: TPCM = z.undefined() as TPCM\n) =>\n z.discriminatedUnion(\"modality\", [\n PartialTextContent(PartialTextContentMetadata),\n PartialToolCallContent(PartialToolCallContentMetadata),\n PartialReasoningContent(PartialReasoningContentMetadata),\n PartialToolResponseContent(PartialToolResponseContentMetadata),\n ]);\ntype PartialContentType<\n TCM extends z.ZodTypeAny = z.ZodUndefined,\n CCM extends z.ZodTypeAny = z.ZodUndefined,\n TPCM extends z.ZodTypeAny = z.ZodUndefined,\n> = z.infer<ReturnType<typeof PartialContent<TCM, CCM, TPCM>>>;\n\nexport {\n Content,\n ModalityEnum,\n ModalityLiterals,\n PartialContent,\n PartialModalityEnum,\n PartialModalityLiterals,\n type ContentType,\n type ModalityEnumType,\n type PartialContentType,\n type PartialModalityEnumType,\n};\n","import { z } from \"zod\";\n\nimport { Content, PartialContent } from \"./content\";\nimport { PartialRoleEnum, RoleEnum } from \"./roles\";\n\nconst Message = <\n R extends z.ZodEnum<[string, ...string[]]> = typeof RoleEnum,\n TCM extends z.ZodTypeAny = z.ZodUndefined,\n ICM extends z.ZodTypeAny = z.ZodUndefined,\n CCM extends z.ZodTypeAny = z.ZodUndefined,\n RCM extends z.ZodTypeAny = z.ZodUndefined,\n RTCM extends z.ZodTypeAny = z.ZodUndefined,\n PCCM extends z.ZodTypeAny = z.ZodUndefined,\n MM extends z.ZodTypeAny = z.ZodUndefined,\n>(\n Role: R = RoleEnum as unknown as R,\n TextContentMetadata: TCM = z.undefined() as TCM,\n ImageContentMetadata: ICM = z.undefined() as ICM,\n ToolCallContentMetadata: CCM = z.undefined() as CCM,\n ToolResponseContentMetadata: RCM = z.undefined() as RCM,\n PdfContentMetadata: PCCM = z.undefined() as PCCM,\n ReasoningContentMetadata: z.ZodTypeAny = z.undefined() as RTCM,\n MessageMetadata: MM = z.undefined() as MM\n) =>\n z.object({\n role: Role,\n content: z.array(\n Content(\n TextContentMetadata,\n ImageContentMetadata,\n ToolCallContentMetadata,\n ToolResponseContentMetadata,\n ReasoningContentMetadata,\n PdfContentMetadata\n )\n ),\n metadata: MessageMetadata,\n });\ntype MessageType<\n R extends z.ZodEnum<[string, ...string[]]> = typeof RoleEnum,\n TCM extends z.ZodTypeAny = z.ZodUndefined,\n ICM extends z.ZodTypeAny = z.ZodUndefined,\n CCM extends z.ZodTypeAny = z.ZodUndefined,\n RCM extends z.ZodTypeAny = z.ZodUndefined,\n RTCM extends z.ZodTypeAny = z.ZodUndefined,\n PCCM extends z.ZodTypeAny = z.ZodUndefined,\n MM extends z.ZodTypeAny = z.ZodUndefined,\n> = z.infer<ReturnType<typeof Message<R, TCM, ICM, CCM, RCM, PCCM, RTCM, MM>>>;\n\nconst PartialMessage = <\n R extends z.ZodEnum<[string, ...string[]]> = typeof PartialRoleEnum,\n TCM extends z.ZodTypeAny = z.ZodUndefined,\n CCM extends z.ZodTypeAny = z.ZodUndefined,\n MM extends z.ZodTypeAny = z.ZodUndefined,\n RTCM extends z.ZodTypeAny = z.ZodUndefined,\n TPCM extends z.ZodTypeAny = z.ZodUndefined,\n>(\n Role: R = PartialRoleEnum as unknown as R,\n TextContentMetadata: TCM = z.undefined() as TCM,\n ToolCallContentMetadata: CCM = z.undefined() as CCM,\n ReasoningContentMetadata: z.ZodTypeAny = z.undefined() as RTCM,\n MessageMetadata: MM = z.undefined() as MM,\n ToolResponseContentMetadata: TPCM = z.undefined() as TPCM\n) =>\n z.object({\n role: Role,\n partialContent: PartialContent(TextContentMetadata, ToolCallContentMetadata, ReasoningContentMetadata, ToolResponseContentMetadata),\n metadata: MessageMetadata,\n });\ntype PartialMessageType<\n R extends z.ZodEnum<[string, ...string[]]> = typeof PartialRoleEnum,\n TCM extends z.ZodTypeAny = z.ZodUndefined,\n CCM extends z.ZodTypeAny = z.ZodUndefined,\n MM extends z.ZodTypeAny = z.ZodUndefined,\n RTCM extends z.ZodTypeAny = z.ZodUndefined,\n TPCM extends z.ZodTypeAny = z.ZodUndefined,\n> = z.infer<ReturnType<typeof PartialMessage<R, TCM, CCM, MM, RTCM, TPCM>>>;\n\nexport { Message, PartialMessage, type MessageType, type PartialMessageType };\n","import { z } from \"zod\";\n\nimport { Message, PartialMessage } from \"./../message\";\n\nconst ChatUsage = z.object({\n promptTokens: z.number().nonnegative(),\n completionTokens: z.number().nonnegative(),\n totalTokens: z.number().nonnegative(),\n});\ntype ChatUsageType = z.infer<typeof ChatUsage>;\n\nconst ChatBaseLogProb = z.object({\n token: z.string(),\n logProb: z.number(),\n bytes: z.array(z.number().int()).nullable(),\n});\ntype ChatBaseLogProbType = z.infer<typeof ChatBaseLogProb>;\n\nconst ChatLogProb = ChatBaseLogProb.extend({\n topLogProbs: z.array(ChatBaseLogProb),\n});\ntype ChatLogProbType = z.infer<typeof ChatLogProb>;\n\nconst ChatLogProbs = z.array(ChatLogProb);\ntype ChatLogProbsType = z.infer<typeof ChatLogProbs>;\n\nconst ChatResponse = z.object({\n messages: z.array(Message()),\n usage: ChatUsage.optional(),\n logProbs: ChatLogProbs.optional(),\n});\ntype ChatResponseType = z.infer<typeof ChatResponse>;\n\nconst PartialChatUsage = z.object({\n promptTokens: z.number().nonnegative().optional(),\n completionTokens: z.number().nonnegative().optional(),\n totalTokens: z.number().nonnegative().optional(),\n});\n\ntype PartialChatUsageType = z.infer<typeof PartialChatUsage>;\n\nconst PartialChatResponse = z.object({\n partialMessages: z.array(PartialMessage()),\n usage: PartialChatUsage.optional(),\n logProbs: ChatLogProbs.optional(),\n});\ntype PartialChatResponseType = z.infer<typeof PartialChatResponse>;\n\nexport {\n ChatBaseLogProb,\n ChatLogProb,\n ChatLogProbs,\n ChatResponse,\n ChatUsage,\n PartialChatResponse,\n PartialChatUsage,\n type ChatBaseLogProbType,\n type ChatLogProbsType,\n type ChatLogProbType,\n type ChatResponseType,\n type ChatUsageType,\n type PartialChatResponseType,\n type PartialChatUsageType,\n};\n","import { z } from \"zod\";\n\nconst Config = <C extends z.ZodRecord<z.ZodString, z.ZodAny> = z.ZodRecord<z.ZodString, z.ZodAny>>(\n Config: C = z.record(z.string(), z.any()).optional() as unknown as C\n) => Config;\ntype ConfigType<C extends z.ZodRecord<z.ZodString, z.ZodAny> = z.ZodRecord<z.ZodString, z.ZodAny>> = z.infer<ReturnType<typeof Config<C>>>;\n\nexport { Config, type ConfigType };\n","import { z } from \"zod\";\n\nconst McpServerToolConfiguration = z.object({\n enabled: z.boolean().default(true),\n allowedTools: z.array(z.string().min(1)),\n});\ntype McpServerToolConfigurationType = z.infer<typeof McpServerToolConfiguration>;\n\nconst McpServer = z.object({\n type: z.literal(\"url\"),\n url: z\n .string()\n .url()\n .refine((url) => url.startsWith(\"https://\"), {\n message: \"MCP server URL must start with https://\",\n }),\n name: z.string().min(1),\n toolConfiguration: McpServerToolConfiguration.optional(),\n authorizationToken: z.string().min(1).optional(),\n});\ntype McpServerType = z.infer<typeof McpServer>;\n\nexport { McpServer, McpServerToolConfiguration, type McpServerToolConfigurationType, type McpServerType };\n","import { z } from \"zod\";\n\n// TODO: move to json schema 7 type and validator when implemented for tool types\nconst ResponseSchemaTypes = [\"object\", \"array\", \"number\", \"string\", \"boolean\", \"enum\"] as const;\nconst ResponseSchemaTypesLiteral = z.enum(ResponseSchemaTypes);\ntype ResponseSchemaTypesType = z.infer<typeof ResponseSchemaTypesLiteral>;\n\nconst ResponseSchemaProperty = z.object({\n anyOf: z.array(z.any()).optional(),\n type: z.union([ResponseSchemaTypesLiteral, z.array(z.union([ResponseSchemaTypesLiteral, z.literal(\"null\")]))]).optional(),\n default: z.any().optional(),\n title: z.string().optional(),\n description: z.string().max(4096).optional(),\n properties: z.record(z.any()).optional(),\n required: z.array(z.string()).optional(),\n minItems: z.number().int().min(0).optional(),\n maxItems: z.number().int().optional(),\n items: z.record(z.any()).optional(), // Recursive structure to handle nested arrays and objects\n enum: z.array(z.union([z.string(), z.number(), z.boolean(), z.null()])).optional(), // Enum for allowed values\n minimum: z.number().optional(), // Minimum value for number\n maximum: z.number().optional(), // Maximum value for number\n minLength: z.number().int().min(0).optional(), // Minimum length for string\n maxLength: z.number().int().optional(), // Maximum length for string\n $ref: z.string().optional(), // Reference to another schema\n});\ntype ResponseSchemaPropertyType = z.infer<typeof ResponseSchemaProperty>;\n\nconst ResponseSchemaStructure = z.object({\n type: z.enum([\"object\"]),\n required: z.array(z.string()),\n $defs: z.record(z.any()).optional(),\n properties: z.record(ResponseSchemaProperty),\n additionalProperties: z.literal(false),\n});\ntype ResponseSchemaStructureType = z.infer<typeof ResponseSchemaStructure>;\n\nconst ResponseSchema = z\n .object({\n name: z\n .string()\n .regex(/^[a-zA-Z0-9_]{1,64}$/)\n .max(64),\n description: z.string().max(4096),\n strict: z.boolean().optional(),\n schema: ResponseSchemaStructure,\n })\n .optional();\ntype ResponseSchemaType = z.infer<typeof ResponseSchema>;\n\nexport {\n ResponseSchema,\n ResponseSchemaProperty,\n ResponseSchemaStructure,\n ResponseSchemaTypes,\n ResponseSchemaTypesLiteral,\n type ResponseSchemaTypesType,\n type ResponseSchemaType,\n type ResponseSchemaPropertyType,\n type ResponseSchemaStructureType,\n};\n","import { z } from \"zod\";\n\nconst EmbeddingTextModalityLiteral = \"text\" as const;\nconst EmbeddingTokenModalityLiteral = \"token\" as const;\n\nconst EmbeddingModalityLiterals = [EmbeddingTextModalityLiteral, EmbeddingTokenModalityLiteral] as const;\nconst EmbeddingModalityEnum = z.enum(EmbeddingModalityLiterals);\ntype EmbeddingModalityEnumType = z.infer<typeof EmbeddingModalityEnum>;\n\nconst TextEmbeddingRequests = z.array(z.string().min(1));\ntype TextEmbeddingRequestsType = z.infer<typeof TextEmbeddingRequests>;\n\nconst TokenEmbeddingRequests = z.array(z.array(z.number().int().nonnegative()));\ntype TokenEmbeddingRequestsType = z.infer<typeof TokenEmbeddingRequests>;\n\nconst EmbeddingRequests = <M extends z.ZodTypeAny = z.ZodUndefined>(Metadata: M = z.undefined() as M) =>\n z.discriminatedUnion(\"modality\", [\n z.object({\n modality: z.literal(EmbeddingTextModalityLiteral),\n metadata: Metadata,\n requests: TextEmbeddingRequests,\n }),\n z.object({\n modality: z.literal(EmbeddingTokenModalityLiteral),\n metadata: Metadata,\n requests: TokenEmbeddingRequests,\n }),\n ]);\ntype EmbeddingRequestsType<M extends z.ZodTypeAny = z.ZodUndefined> = z.infer<ReturnType<typeof EmbeddingRequests<M>>>;\n\nexport {\n EmbeddingTextModalityLiteral,\n EmbeddingTokenModalityLiteral,\n EmbeddingModalityLiterals,\n EmbeddingModalityEnum,\n TextEmbeddingRequests,\n TokenEmbeddingRequests,\n EmbeddingRequests,\n type EmbeddingRequestsType,\n type EmbeddingModalityEnumType,\n type TextEmbeddingRequestsType,\n type TokenEmbeddingRequestsType,\n};\n","import { z } from \"zod\";\n\nconst FloatEmbeddingLiteral = \"float\" as const;\nconst FloatEmbedding = z.object({\n index: z.number().int().nonnegative(),\n embedding: z.array(z.number()),\n});\ntype FloatEmbeddingType = z.infer<typeof FloatEmbedding>;\n\nconst Base64EmbeddingLiteral = \"base64\" as const;\nconst Base64Embedding = z.object({\n index: z.number().int().nonnegative(),\n embedding: z.string().base64(),\n});\ntype Base64EmbeddingType = z.infer<typeof Base64Embedding>;\n\nconst EmbeddingsUsage = z.object({\n totalTokens: z.number().int().nonnegative(),\n});\ntype EmbeddingsUsageType = z.infer<typeof EmbeddingsUsage>;\n\nconst EmbeddingResponse = z.discriminatedUnion(\"encodingFormat\", [\n z.object({\n encodingFormat: z.literal(FloatEmbeddingLiteral),\n embeddings: z.array(FloatEmbedding),\n usage: EmbeddingsUsage.optional(),\n }),\n z.object({\n encodingFormat: z.literal(Base64EmbeddingLiteral),\n embeddings: z.array(Base64Embedding),\n usage: EmbeddingsUsage.optional(),\n }),\n]);\ntype EmbeddingResponseType = z.infer<typeof EmbeddingResponse>;\n\nexport {\n FloatEmbeddingLiteral,\n Base64EmbeddingLiteral,\n FloatEmbedding,\n Base64Embedding,\n EmbeddingsUsage,\n EmbeddingResponse,\n type FloatEmbeddingType,\n type Base64EmbeddingType,\n type EmbeddingsUsageType,\n type EmbeddingResponseType,\n};\n","const safeStringify = (obj: unknown) => {\n const seen = new WeakSet();\n return JSON.stringify(obj, (key, value) => {\n if (typeof value === \"object\" && value !== null) {\n if (seen.has(value)) {\n return; // Skip circular reference\n }\n seen.add(value);\n }\n return value;\n });\n};\n\nconst getErrorMessage = (error: unknown | undefined): string => {\n if (error == null) return \"unknown error\";\n if (typeof error === \"string\") return error;\n if (error instanceof Error) return error.message;\n return safeStringify(error);\n};\n\nconst GatewayBaseErrorLiteral = \"GatewayBaseError\" as const;\nclass GatewayBaseError extends Error {\n readonly name: string = GatewayBaseErrorLiteral;\n readonly info: string;\n readonly cause: unknown;\n\n constructor({ info, cause }: { info: string; cause: unknown }, name?: string) {\n super(`[${name ?? GatewayBaseErrorLiteral}]: ${info}\\nMessage: ${getErrorMessage(cause)}`);\n this.info = info;\n this.cause = cause;\n this.name = name ?? GatewayBaseErrorLiteral;\n Object.setPrototypeOf(this, new.target.prototype);\n }\n\n static isGatewayBaseError(error: unknown): error is GatewayBaseError {\n return error instanceof GatewayBaseError;\n }\n\n toJSON(): object {\n return {\n name: this.name,\n info: this.info,\n cause: this.cause,\n message: this.message,\n stack: this.stack,\n };\n }\n}\n\nexport { GatewayBaseError };\n","import { z } from \"zod\";\n\n/**\n * A pair of per‑million‑token rates for a single price category (e.g., base input/output).\n * Represents the input and output cost for 1 million tokens within a specific category (like 'base') of a pricing tier.\n */\nconst ChatModelTokenPairPrice = z\n .object({\n inputPricePerMillion: z.number().nonnegative().describe(\"Price per 1M input tokens\"),\n outputPricePerMillion: z.number().nonnegative().describe(\"Price per 1M output tokens\"),\n })\n .describe(\"Input/output price pair (per 1M tokens) for a specific category within a ChatModel pricing tier.\");\n\ntype ChatModelTokenPairPriceType = z.infer<typeof ChatModelTokenPairPrice>;\n\n/**\n * Defines the price categories (e.g., base) applicable within a single pricing tier (`ChatModelTokenRangePrice`).\n * Each category holds a `ChatModelTokenPairPrice`.\n */\nconst ChatModelTokenTypePrice = z\n .object({\n base: ChatModelTokenPairPrice.describe(\"Base (uncached, non‑reasoning) rates\"),\n // Add optional 'cached' and 'reasoning' here if they become standard\n })\n .describe(\"Holds the `ChatModelTokenPairPrice` for different categories (e.g., base) within a single pricing tier.\");\n\ntype ChatModelTokenTypePriceType = z.infer<typeof ChatModelTokenTypePrice>;\n\n/**\n * Defines a single tier in a model's pricing schedule (`ChatModelPrice`), based on token count range.\n * - `minTokens`: inclusive lower bound (integer ≥ 0).\n * - `maxTokens`: exclusive upper bound (integer > minTokens), or `null` for ∞.\n * - `prices`: the `ChatModelTokenTypePrice` (categories and their rates) applicable to this tier.\n */\nconst ChatModelTokenRangePrice = z\n .object({\n minTokens: z.number().int().nonnegative().describe(\"Inclusive lower token bound for this tier.\"),\n maxTokens: z.number().int().nullable().optional().describe(\"Exclusive upper token bound; `null` means ∞.\"),\n prices: ChatModelTokenTypePrice.describe(\"Price categories and rates for this specific token range.\"),\n })\n .refine((t) => t.maxTokens === null || (typeof t.maxTokens === \"number\" && t.maxTokens > t.minTokens), {\n message: \"maxTokens must be > minTokens (or null for infinite).\",\n path: [\"maxTokens\"],\n })\n .describe(\"A single pricing tier defined by a token range and associated prices.\");\n\ntype ChatModelTokenRangePriceType = z.infer<typeof ChatModelTokenRangePrice>;\n\n/**\n * Full pricing schedule for a specific chat model, potentially with multiple `ChatModelTokenRangePrice` tiers.\n * Ensures tiers are contiguous and cover the full range from 0 to infinity.\n * - First tier must start at 0 tokens.\n * - `tokenRanges` must be contiguous: each tier.minTokens === previous.maxTokens.\n * - Last `tokenRange` must have maxTokens = null (infinite).\n */\nconst ChatModelPrice = z\n .object({\n modelName: z.string().describe(\"Model name this schedule applies to.\"),\n currency: z.string().default(\"USD\").describe(\"Currency code (e.g., USD).\"),\n tokenRanges: z\n .array(ChatModelTokenRangePrice)\n .min(1)\n .describe(\"Pricing tiers (`ChatModelTokenRangePrice`) schedule, sorted by minTokens.\"),\n })\n .superRefine((data, ctx) => {\n const { tokenRanges } = data;\n\n // 1) First tier starts at 0\n if (tokenRanges[0].minTokens !== 0) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n path: [\"tokenRanges\", 0, \"minTokens\"],\n message: \"The first tier must have minTokens = 0.\",\n });\n }\n\n // 2) tokenRanges must be sorted and contiguous\n for (let i = 1; i < tokenRanges.length; i++) {\n const prev = tokenRanges[i - 1];\n const curr = tokenRanges[i];\n\n if (prev.maxTokens === null) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n path: [\"tokenRanges\", i - 1, \"maxTokens\"],\n message: \"Cannot define any tokenRanges after an infinite tier (maxTokens = null).\",\n });\n break; // Stop further checks if structure is already invalid\n }\n\n if (curr.minTokens !== prev.maxTokens) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n path: [\"tokenRanges\", i, \"minTokens\"],\n message: `Tier ${i} minTokens (${curr.minTokens}) must equal previous tier's maxTokens (${prev.maxTokens}) for contiguity.`,\n });\n }\n\n // Ensure sorting (although contiguity check often implies this)\n if (curr.minTokens < prev.minTokens) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n path: [\"tokenRanges\", i, \"minTokens\"],\n message: `tokenRanges must be sorted by ascending minTokens. Tier ${i} (${curr.minTokens}) starts before Tier ${i - 1} (${prev.minTokens}).`,\n });\n }\n }\n\n // 3) Last tier must be infinite\n const last = tokenRanges[tokenRanges.length - 1];\n // Check last.maxTokens only if the loop didn't break early due to a previous infinite tier\n if (tokenRanges.every((t) => t.maxTokens !== null || t === last) && last.maxTokens !== null) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n path: [\"tokenRanges\", tokenRanges.length - 1, \"maxTokens\"],\n message: \"The final tier must have maxTokens = null (representing infinity).\",\n });\n }\n })\n .describe(\"Complete pricing schedule for a single chat model, including all its token-based tiers.\");\n\ntype ChatModelPriceType = z.infer<typeof ChatModelPrice>;\n\n// Export the schemas and types\nexport { ChatModelPrice, ChatModelTokenPairPrice, ChatModelTokenRangePrice, ChatModelTokenTypePrice };\nexport type { ChatModelPriceType, ChatModelTokenPairPriceType, ChatModelTokenRangePriceType, ChatModelTokenTypePriceType };\n","import { z } from \"zod\";\n\nconst FunctionToolLiteral = \"function\" as const;\n\nconst FunctionParameterTypes = [\"object\", \"array\", \"number\", \"string\", \"boolean\", \"null\"];\nconst FunctionParameterTypesLiteral = z.enum([\"object\", \"array\", \"number\", \"string\", \"boolean\", \"null\"]);\ntype FunctionParameterTypesType = z.infer<typeof FunctionParameterTypesLiteral>;\n\nconst FunctionParameter = z.object({\n anyOf: z.array(z.any()).optional(),\n type: FunctionParameterTypesLiteral.optional(),\n default: z.any().optional(),\n title: z.string().optional(),\n description: z.string().max(4096).optional(),\n properties: z.record(z.any()).optional(),\n required: z.array(z.string()).optional(),\n minItems: z.number().int().min(0).optional(),\n maxItems: z.number().int().optional(),\n items: z.record(z.any()).optional(), // Recursive structure to handle nested arrays and objects\n enum: z.array(z.union([z.string(), z.number(), z.boolean(), z.null()])).optional(), // Enum for allowed values\n minimum: z.number().optional(), // Minimum value for number\n maximum: z.number().optional(), // Maximum value for number\n minLength: z.number().int().min(0).optional(), // Minimum length for string\n maxLength: z.number().int().optional(), // Maximum length for string\n});\ntype FunctionParameterType = z.infer<typeof FunctionParameter>;\n\nconst FunctionParameters = z.object({\n type: z.enum([\"object\"]),\n title: z.string().optional(),\n $defs: z.record(z.any()).optional(),\n properties: z.record(FunctionParameter).optional(),\n required: z.array(z.string()).optional(),\n});\ntype FunctionParametersType = z.infer<typeof FunctionParameters>;\n\nconst Function = z.object({\n name: z\n .string()\n .regex(/^[a-zA-Z0-9_]{1,64}$/)\n .max(64),\n description: z.string().max(4096),\n parameters: z.any(),\n strict: z.boolean().optional(),\n});\ntype FunctionType = z.infer<typeof Function>;\n\nconst ToolTypes = [\"function\"];\nconst ToolTypesLiteral = z.enum([\"function\"]);\ntype ToolTypesType = z.infer<typeof ToolTypesLiteral>;\n\nconst FunctionRequestRetry = z.object({\n maxAttempts: z.number().int().positive(),\n initialDelay: z.number().int().positive(),\n exponentialFactor: z.number().int().positive(),\n});\n\nconst FunctionRequestHttp = z.object({\n type: z.literal(\"http\"),\n method: z.enum([\"get\", \"post\"]),\n url: z.string().url(),\n headers: z.record(z.string()).optional(),\n query: z.record(z.string()).optional(),\n body: z.record(z.any()).optional(),\n proxyUrl: z.string().url().optional(),\n proxyHeaders: z.record(z.string()).optional(),\n retry: FunctionRequestRetry.optional(),\n});\n\nconst FunctionRequest = z.discriminatedUnion(\"type\", [FunctionRequestHttp]);\n\nconst FunctionTool = z.object({\n type: ToolTypesLiteral,\n definition: z.object({\n schema: Function,\n }),\n request: FunctionRequest.optional(),\n});\ntype FunctionToolType = z.infer<typeof FunctionTool>;\n\nexport {\n Function,\n FunctionParameter,\n FunctionParameters,\n FunctionParameterTypes,\n FunctionParameterTypesLiteral,\n FunctionRequestHttp,\n FunctionRequest,\n FunctionRequestRetry,\n ToolTypes,\n ToolTypesLiteral,\n type FunctionParametersType,\n type FunctionParameterType,\n type FunctionParameterTypesType,\n type FunctionType,\n type ToolTypesType,\n};\n\nexport { FunctionTool, FunctionToolLiteral, type FunctionToolType };\n","import { z } from \"zod\";\n\nimport { FunctionTool, FunctionToolLiteral } from \"./function-tool\";\n\nconst ToolLiterals = [FunctionToolLiteral] as const;\nconst ToolEnum = z.enum(ToolLiterals);\ntype ToolEnumType = z.infer<typeof ToolEnum>;\n\nconst Tool = <FTM extends z.ZodTypeAny>(FunctionToolMetadata: FTM = z.undefined() as FTM) =>\n z.discriminatedUnion(\"type\", [FunctionTool.extend({ metadata: FunctionToolMetadata })]);\ntype ToolType<FTM extends z.ZodTypeAny = z.ZodUndefined> = z.infer<ReturnType<typeof Tool<FTM>>>;\n\nexport { Tool, ToolEnum, ToolLiterals, type ToolEnumType, type ToolType };\n","import {\n Base64ImageContentTypeLiteral,\n ContentType,\n ImageContent,\n ImageContentDetailsLiteralType,\n ImageModalityLiteral,\n Message,\n MessageType,\n PartialMessage,\n PartialMessageType,\n PartialReasoningContent,\n PartialReasoningModalityLiteral,\n PartialTextContent,\n PartialTextModalityLiteral,\n PartialToolCallContent,\n PartialToolCallModalityLiteral,\n PartialToolResponseContent,\n PartialToolResponseModalityLiteral,\n ReasoningContent,\n ReasoningContentTypeLiteral,\n ReasoningModalityLiteral,\n RedactedReasoningContentTypeLiteral,\n RoleEnumType,\n TextContent,\n TextModalityLiteral,\n ToolCallContent,\n ToolCallModalityLiteral,\n ToolResponseContent,\n ToolResponseModalityLiteral,\n UrlImageContentTypeLiteral,\n} from \"./../message\";\n\nconst createTextContent = (content: string): ContentType => {\n return TextContent().parse({\n modality: TextModalityLiteral,\n value: content,\n });\n};\n\nconst createToolCallContent = (index: number, id: string, name: string, args: string, serverName?: string): ContentType => {\n return ToolCallContent().parse({\n modality: ToolCallModalityLiteral,\n index: index,\n id: id,\n name: name,\n arguments: args,\n serverName: serverName,\n });\n};\n\nconst createToolResponseContent = (\n index: number,\n id: string,\n name: string,\n data: string,\n apiResponse?: { statusCode: number },\n metadata?: any\n): ContentType => {\n return ToolResponseContent().parse({\n modality: ToolResponseModalityLiteral,\n index: index,\n id: id,\n name: name,\n data: data,\n apiResponse: apiResponse,\n metadata: metadata,\n });\n};\n\nconst createTextMessage = (role: RoleEnumType, content: string): MessageType => {\n return Message().parse({\n role: role,\n content: [\n TextContent().parse({\n modality: TextModalityLiteral,\n value: content,\n }),\n ],\n });\n};\n\nconst createUrlImageMessage = (role: RoleEnumType, url: string, detail: ImageContentDetailsLiteralType): MessageType => {\n return Message().parse({\n role: role,\n content: [\n ImageContent().parse({\n modality: ImageModalityLiteral,\n detail: detail,\n value: {\n type: UrlImageContentTypeLiteral,\n url: url,\n },\n }),\n ],\n });\n};\n\nconst createBase64ImageMessage = (role: RoleEnumType, base64: string, detail: ImageContentDetailsLiteralType): MessageType => {\n return Message().parse({\n role: role,\n content: [\n ImageContent().parse({\n modality: ImageModalityLiteral,\n detail: detail,\n value: {\n type: Base64ImageContentTypeLiteral,\n base64: base64,\n },\n }),\n ],\n });\n};\n\nconst createToolCallMessage = (role: RoleEnumType, index: number, id: string, name: string, args: string): MessageType => {\n return Message().parse({\n role: role,\n content: [\n ToolCallContent().parse({\n modality: ToolCallModalityLiteral,\n index: index,\n id: id,\n name: name,\n arguments: args,\n }),\n ],\n });\n};\n\nconst createToolResponseMessage = (role: RoleEnumType, index: number, id: string, name: string, data: string): MessageType => {\n return Message().parse({\n role: role,\n content: [\n ToolResponseContent().parse({\n modality: ToolResponseModalityLiteral,\n index: index,\n id: id,\n name: name,\n data: data,\n }),\n ],\n });\n};\n\nconst createPartialTextMessage = (role: RoleEnumType, content: string): PartialMessageType => {\n return PartialMessage().parse({\n role: role,\n partialContent: PartialTextContent().parse({\n modality: PartialTextModalityLiteral,\n value: content,\n }),\n });\n};\n\nconst createPartialToolCallMessage = (\n role: RoleEnumType,\n index: number,\n id?: string,\n name?: string,\n args?: string,\n serverName?: string\n): PartialMessageType => {\n return PartialMessage().parse({\n role: role,\n partialContent: PartialToolCallContent().parse({\n modality: PartialToolCallModalityLiteral,\n index: index,\n id: id,\n name: name,\n arguments: args,\n serverName: serverName,\n }),\n });\n};\n\nconst createPartialToolResponseMessage = (\n role: RoleEnumType,\n index: number,\n id: string,\n name: string,\n data: string\n): PartialMessageType => {\n return PartialMessage().parse({\n role: role,\n partialContent: PartialToolResponseContent().parse({\n modality: PartialToolResponseModalityLiteral,\n index: index,\n id: id,\n name: name,\n data: data,\n }),\n });\n};\nconst createReasoningContent = (thinking: string, signature: string): ContentType => {\n return ReasoningContent().parse({\n modality: ReasoningModalityLiteral,\n value: {\n type: ReasoningContentTypeLiteral,\n thinking,\n signature,\n },\n });\n};\n\nconst createReasoningMessage = (role: RoleEnumType, thinking: string, signature: string): MessageType => {\n return Message().parse({\n role: role,\n content: [\n ReasoningContent().parse({\n modality: ReasoningModalityLiteral,\n value: {\n type: ReasoningContentTypeLiteral,\n thinking,\n signature,\n },\n }),\n ],\n });\n};\n// Redacted Reasoning Content\nconst createRedactedReasoningContent = (data: string): ContentType => {\n return ReasoningContent().parse({\n modality: ReasoningModalityLiteral,\n value: {\n type: RedactedReasoningContentTypeLiteral,\n data,\n },\n });\n};\n\nconst createRedactedReasoningMessage = (role: RoleEnumType, data: string): MessageType => {\n return Message().parse({\n role: role,\n content: [\n ReasoningContent().parse({\n modality: ReasoningModalityLiteral,\n value: {\n type: RedactedReasoningContentTypeLiteral,\n data,\n },\n }),\n ],\n });\n};\n\nconst createPartialReasoningMessage = (role: RoleEnumType, thinking?: string, signature?: string): PartialMessageType => {\n return PartialMessage().parse({\n role: role,\n partialContent: PartialReasoningContent().parse({\n modality: PartialReasoningModalityLiteral,\n value: {\n type: ReasoningContentTypeLiteral,\n thinking,\n signature,\n },\n // metadata is optional; omit or provide if needed\n }),\n });\n};\n\n// Create a partial redacted reasoning message\nconst createPartialRedactedReasoningMessage = (role: RoleEnumType, data: string): PartialMessageType => {\n return PartialMessage().parse({\n role: role,\n partialContent: PartialReasoningContent().parse({\n modality: PartialReasoningModalityLiteral,\n value: {\n type: RedactedReasoningContentTypeLiteral,\n data,\n },\n // metadata is optional; omit or provide if needed\n }),\n });\n};\n\nexport {\n createBase64ImageMessage,\n createPartialReasoningMessage,\n createPartialRedactedReasoningMessage,\n createPartialTextMessage,\n createPartialToolCallMessage,\n createPartialToolResponseMessage,\n createReasoningContent,\n createReasoningMessage,\n createRedactedReasoningContent,\n createRedactedReasoningMessage,\n createTextContent,\n createTextMessage,\n createToolCallContent,\n createToolCallMessage,\n createToolResponseContent,\n createToolResponseMessage,\n createUrlImageMessage,\n};\n","import { GatewayBaseError } from \"@adaline/types\";\n\nconst ProviderErrorLiteral = \"ProviderError\" as const;\nexport class ProviderError extends GatewayBaseError {\n readonly name = ProviderErrorLiteral;\n readonly info: string;\n readonly cause: unknown;\n\n constructor({ info, cause }: { info: string; cause: unknown }) {\n super({ info, cause }, ProviderErrorLiteral);\n this.info = info;\n this.cause = cause;\n }\n\n static isProviderError(error: unknown): error is ProviderError {\n return error instanceof ProviderError;\n }\n}\n","import { GatewayBaseError } from \"@adaline/types\";\n\nconst ModelResponseErrorLiteral = \"ModelResponseError\" as const;\nexport class ModelResponseError extends GatewayBaseError {\n readonly name = ModelResponseErrorLiteral;\n readonly info: string;\n readonly cause: unknown;\n\n constructor({ info, cause }: { info: string; cause: unknown }) {\n super({ info, cause }, ModelResponseErrorLiteral);\n this.cause = cause;\n this.info = info;\n }\n\n static isModelResponseError(error: unknown): error is ModelResponseError {\n return error instanceof ModelResponseError;\n }\n}\n","import { GatewayBaseError } from \"@adaline/types\";\n\nconst InvalidModelRequestErrorLiteral = \"InvalidModelRequestError\" as const;\nexport class InvalidModelRequestError extends GatewayBaseError {\n readonly name = InvalidModelRequestErrorLiteral;\n readonly info: string;\n readonly cause: unknown;\n\n constructor({ info, cause }: { info: string; cause: unknown }) {\n super({ info, cause }, InvalidModelRequestErrorLiteral);\n this.cause = cause;\n this.info = info;\n Object.setPrototypeOf(this, new.target.prototype);\n }\n\n static isInvalidModelRequestError(error: unknown): error is InvalidModelRequestError {\n return error instanceof InvalidModelRequestError;\n }\n}\n","import { GatewayBaseError } from \"@adaline/types\";\n\nconst InvalidConfigErrorLiteral = \"InvalidConfigError\" as const;\nexport class InvalidConfigError extends GatewayBaseError {\n readonly name = InvalidConfigErrorLiteral;\n readonly info: string;\n readonly cause: unknown;\n\n constructor({ info, cause }: { info: string; cause: unknown }) {\n super({ info, cause }, InvalidConfigErrorLiteral);\n this.cause = cause;\n this.info = info;\n Object.setPrototypeOf(this, new.target.prototype);\n }\n\n static isInvalidConfigError(error: unknown): error is InvalidConfigError {\n return error instanceof InvalidConfigError;\n }\n}\n","import { GatewayBaseError } from \"@adaline/types\";\n\nconst InvalidMessagesErrorLiteral = \"InvalidMessagesError\" as const;\nexport class InvalidMessagesError extends GatewayBaseError {\n readonly name = InvalidMessagesErrorLiteral;\n readonly info: string;\n readonly cause: unknown;\n\n constructor({ info, cause }: { info: string; cause: unknown }) {\n super({ info, cause }, InvalidMessagesErrorLiteral);\n this.cause = cause;\n this.info = info;\n Object.setPrototypeOf(this, new.target.prototype);\n }\n\n static isInvalidMessagesError(error: unknown): error is InvalidMessagesError {\n return error instanceof InvalidMessagesError;\n }\n}\n","import { GatewayBaseError } from \"@adaline/types\";\n\nconst InvalidToolsErrorLiteral = \"InvalidToolsError\" as const;\nexport class InvalidToolsError extends GatewayBaseError {\n readonly name = InvalidToolsErrorLiteral;\n readonly info: string;\n readonly cause: unknown;\n\n constructor({ info, cause }: { info: string; cause: unknown }) {\n super({ info, cause }, InvalidToolsErrorLiteral);\n this.cause = cause;\n this.info = info;\n Object.setPrototypeOf(this, new.target.prototype);\n }\n\n static isInvalidToolsError(error: unknown): error is InvalidToolsError {\n return error instanceof InvalidToolsError;\n }\n}\n","import { z } from \"zod\";\n\nconst MultiStringConfigItemTypeLiteral = \"multi-string\" as const;\n\nconst MultiStringConfigItemDef = z.object({\n type: z.literal(MultiStringConfigItemTypeLiteral),\n param: z.string().min(1),\n title: z.string().min(1),\n description: z.string().min(1).max(500),\n max: z.number().int().positive(),\n});\ntype MultiStringConfigItemType = z.infer<typeof MultiStringConfigItemDef>;\n\nconst MultiStringConfigItemSchema = (max: number) => z.array(z.string()).max(max).default([]).optional();\ntype MultiStringConfigItemSchemaType = z.infer<ReturnType<typeof MultiStringConfigItemSchema>>;\n\nconst MultiStringConfigItem = (data: Omit<MultiStringConfigItemType, \"type\">) => {\n return {\n def: MultiStringConfigItemDef.parse({\n type: MultiStringConfigItemTypeLiteral,\n ...data,\n }),\n schema: MultiStringConfigItemSchema(data.max),\n };\n};\n\nexport {\n MultiStringConfigItem,\n MultiStringConfigItemDef,\n MultiStringConfigItemSchema,\n MultiStringConfigItemTypeLiteral,\n type MultiStringConfigItemSchemaType,\n type MultiStringConfigItemType,\n};\n","import { z } from \"zod\";\n\nconst ObjectSchemaConfigItemTypeLiteral = \"object-schema\" as const;\n\nconst ObjectSchemaConfigItemDef = z.object({\n type: z.literal(ObjectSchemaConfigItemTypeLiteral),\n param: z.string().min(1),\n title: z.string().min(1),\n description: z.string().min(1).max(500),\n objectSchema: z.any(),\n});\ntype ObjectSchemaConfigItemType = z.infer<typeof ObjectSchemaConfigItemDef>;\n\nconst ObjectSchemaConfigItemSchema = <S extends z.ZodRawShape>(schema: z.ZodObject<S>) => schema.optional();\ntype ObjectSchemaConfigItemSchemaType<S extends z.ZodRawShape = z.ZodRawShape> = z.infer<\n ReturnType<typeof ObjectSchemaConfigItemSchema<S>>\n>;\n\nconst ObjectSchemaConfigItem = (data: Omit<ObjectSchemaConfigItemType, \"type\">) => {\n return {\n def: ObjectSchemaConfigItemDef.parse({\n type: ObjectSchemaConfigItemTypeLiteral,\n ...data,\n }),\n schema: ObjectSchemaConfigItemSchema(data.objectSchema),\n };\n};\n\nexport {\n ObjectSchemaConfigItem,\n ObjectSchemaConfigItemDef,\n ObjectSchemaConfigItemSchema,\n ObjectSchemaConfigItemTypeLiteral,\n type ObjectSchemaConfigItemType,\n type ObjectSchemaConfigItemSchemaType,\n};\n","import { z } from \"zod\";\n\nconst RangeConfigItemTypeLiteral = \"range\" as const;\n\nconst RangeConfigItemDef = z.object({\n type: z.literal(RangeConfigItemTypeLiteral),\n param: z.string().min(1),\n title: z.string().min(1),\n description: z.string().min(1).max(500),\n min: z.number().int(),\n max: z.number().int(),\n step: z.number().positive(),\n default: z.number(),\n});\ntype RangeConfigItemDefType = z.infer<typeof RangeConfigItemDef>;\n\nconst RangeConfigItemSchema = (min: number, max: number, step: number, defaultValue: number) =>\n z.number().min(min).max(max).step(step).default(defaultValue).optional();\ntype RangeConfigItemSchemaType = z.infer<ReturnType<typeof RangeConfigItemSchema>>;\n\nconst RangeConfigItem = (data: Omit<RangeConfigItemDefType, \"type\">) => {\n return {\n def: RangeConfigItemDef.parse({\n type: RangeConfigItemTypeLiteral,\n ...data,\n }),\n schema: RangeConfigItemSchema(data.min, data.max, data.step, data.default),\n };\n};\n\nexport {\n RangeConfigItem,\n RangeConfigItemDef,\n RangeConfigItemSchema,\n RangeConfigItemTypeLiteral,\n type RangeConfigItemDefType,\n type RangeConfigItemSchemaType,\n};\n","import { z } from \"zod\";\n\nconst SelectBooleanConfigItemTypeLiteral = \"select-boolean\" as const;\n\nconst SelectBooleanConfigItemDef = z.object({\n type: z.literal(SelectBooleanConfigItemTypeLiteral),\n param: z.string().min(1),\n title: z.string().min(1),\n description: z.string().min(1).max(500),\n default: z.boolean().nullable(),\n});\ntype SelectBooleanConfigItemDefType = z.infer<typeof SelectBooleanConfigItemDef>;\n\nconst SelectBooleanConfigItemSchema = (defaultValue: boolean | null) => z.boolean().nullable().default(defaultValue).optional();\ntype SelectBooleanConfigItemSchemaType = z.infer<ReturnType<typeof SelectBooleanConfigItemSchema>>;\n\nconst SelectBooleanConfigItem = (data: Omit<SelectBooleanConfigItemDefType, \"type\">) => {\n return {\n def: SelectBooleanConfigItemDef.parse({\n type: SelectBooleanConfigItemTypeLiteral,\n ...data,\n }),\n schema: SelectBooleanConfigItemSchema(data.default),\n };\n};\n\nexport {\n SelectBooleanConfigItem,\n SelectBooleanConfigItemDef,\n SelectBooleanConfigItemSchema,\n SelectBooleanConfigItemTypeLiteral,\n type SelectBooleanConfigItemDefType,\n type SelectBooleanConfigItemSchemaType,\n};\n","import { z } from \"zod\";\n\nconst SelectStringConfigItemTypeLiteral = \"select-string\" as const;\n\nconst SelectStringConfigItemDef = z.object({\n type: z.literal(SelectStringConfigItemTypeLiteral),\n param: z.string().min(1),\n title: z.string().min(1),\n description: z.string().min(1).max(500),\n default: z.string(),\n choices: z.array(z.string()),\n});\ntype SelectStringConfigItemDefType = z.infer<typeof SelectStringConfigItemDef>;\n\nconst SelectStringConfigItemSchema = (defaultValue: string | null, choices: string[]) =>\n z\n .enum(choices as [string, ...string[]])\n .nullable()\n .default(defaultValue)\n .optional();\ntype SelectStringConfigItemSchemaType = z.infer<ReturnType<typeof SelectStringConfigItemSchema>>;\n\nconst SelectStringConfigItem = (data: Omit<SelectStringConfigItemDefType, \"type\">) => {\n return {\n def: SelectStringConfigItemDef.parse({\n type: SelectStringConfigItemTypeLiteral,\n ...data,\n }),\n schema: SelectStringConfigItemSchema(data.default, data.choices),\n };\n};\n\nexport {\n SelectStringConfigItem,\n SelectStringConfigItemDef,\n SelectStringConfigItemSchema,\n SelectStringConfigItemTypeLiteral,\n type SelectStringConfigItemDefType,\n type SelectStringConfigItemSchemaType,\n};\n","import { z } from \"zod\";\n\nimport { MultiStringConfigItemDef, MultiStringConfigItemTypeLiteral } from \"./multi-string-config-item\";\nimport { ObjectSchemaConfigItemDef, ObjectSchemaConfigItemTypeLiteral } from \"./object-schema-config-item\";\nimport { RangeConfigItemDef, RangeConfigItemTypeLiteral } from \"./range-config-item\";\nimport { SelectBooleanConfigItemDef, SelectBooleanConfigItemTypeLiteral } from \"./select-boolean-config-item\";\nimport { SelectStringConfigItemDef, SelectStringConfigItemTypeLiteral } from \"./select-string-config-item\";\n\nconst ConfigItemLiterals = [\n RangeConfigItemTypeLiteral,\n MultiStringConfigItemTypeLiteral,\n SelectStringConfigItemTypeLiteral,\n ObjectSchemaConfigItemTypeLiteral,\n SelectBooleanConfigItemTypeLiteral,\n] as const;\nconst ConfigItemEnum = z.enum(ConfigItemLiterals);\ntype ConfigItemEnumType = z.infer<typeof ConfigItemEnum>;\n\nconst ConfigItemDef = z.discriminatedUnion(\"type\", [\n RangeConfigItemDef,\n MultiStringConfigItemDef,\n SelectStringConfigItemDef,\n SelectBooleanConfigItemDef,\n ObjectSchemaConfigItemDef,\n]);\ntype ConfigItemDefType = z.infer<typeof ConfigItemDef>;\n\nexport { ConfigItemDef, ConfigItemEnum, ConfigItemLiterals, type ConfigItemDefType, type ConfigItemEnumType };\n","import { z } from \"zod\";\n\nimport { ChatModelPriceType, ModalityEnum, RoleEnum } from \"@adaline/types\";\n\nimport { ConfigItemDef } from \"../../types/config\";\n\nconst ChatModelSchema = <\n R extends z.ZodEnum<[string, ...string[]]> = typeof RoleEnum,\n M extends z.ZodEnum<[string, ...string[]]> = typeof ModalityEnum,\n>(\n Roles: R = RoleEnum as unknown as R,\n Modalities: M = ModalityEnum as unknown as M\n) =>\n z.object({\n name: z.string().min(1),\n description: z.string().min(1),\n roles: z.record(Roles, z.string().min(1).optional()),\n modalities: z.array(Modalities).nonempty(),\n maxInputTokens: z.number().int().positive().min(1),\n maxOutputTokens: z.number().int().positive().min(1),\n maxReasoningTokens: z.number().int().positive().min(1).optional(),\n config: z\n .object({\n def: z.record(z.string().min(1), ConfigItemDef),\n schema: z.instanceof(z.ZodObject),\n })\n .refine(\n (config) => {\n const defKeys = Object.keys(config.def);\n const schemaKeys = Object.keys(config.schema?.shape ?? {});\n return defKeys.every((key) => schemaKeys.includes(key)) && schemaKeys.every((key) => defKeys.includes(key));\n },\n {\n message: \"Keys in 'config.def' must exactly match keys in 'config.schema'\",\n }\n ),\n price: z.custom<ChatModelPriceType>(),\n });\ntype ChatModelSchemaType<\n R extends z.ZodEnum<[string, ...string[]]> = typeof RoleEnum,\n M extends z.ZodEnum<[string, ...string[]]> = typeof ModalityEnum,\n> = z.infer<ReturnType<typeof ChatModelSchema<R, M>>>;\n\nexport { ChatModelSchema, type ChatModelSchemaType };\n","import { z } from \"zod\";\n\nconst Headers = z.record(z.string());\ntype HeadersType = z.infer<typeof Headers>;\n\nexport { Headers, type HeadersType };\n","import { z } from \"zod\";\n\nconst Params = z.record(\n z.union([\n z.boolean(),\n z.string(),\n z.number(),\n z.object({}),\n z.array(z.any()),\n z.null(),\n z.undefined(),\n ])\n);\ntype ParamsType = z.infer<typeof Params>;\n\nexport { Params, type ParamsType };\n","import { z } from \"zod\";\n\nconst Url = z.string().url();\ntype UrlType = z.infer<typeof Url>;\n\nexport { Url, type UrlType };\n","const TEMPERATURE = {\n type: \"range\",\n title: \"Temperature\",\n description:\n \"Adjusts the model's creativity level. With a setting of 0, the model strictly picks the most probable next word. \\\n For endeavors that benefit from a dash of inventiveness, consider dialing it up to 0.7 or higher, enabling the model to produce text \\\n that's unexpectedly fresh.\",\n} as const;\n\nconst MAX_TOKENS = {\n type: \"range\",\n title: \"Max tokens\",\n description:\n \"Specify the total tokens for generation, where one token approximates four English characters. \\\n Setting this to 0 defaults to the model's maximum capacity.\",\n} as const;\n\nconst MAX_REASONING_TOKENS = {\n type: \"range\",\n title: \"Max reasoning tokens\",\n description: \"Specify the total tokens for reasoning, where one token approximates four English characters.\",\n} as const;\n\nconst STOP = (max: number) =>\n ({\n type: \"multi\",\n title: \"Stop sequence\",\n description: `Enter up to ${max} sequences that will halt additional text output. \\\n The generated text will exclude these sequences.`,\n }) as const;\n\nconst TOP_A = {\n type: \"range\",\n title: \"Top A\",\n description:\n \"Considers only the top tokens that have 'sufficiently high' probabilities relative to the most likely token, \\\n functioning like a dynamic Top-P. \\\n A lower Top-A value narrows down the token choices based on the highest probability token, \\\n while a higher Top-A value refines the filtering without necessarily impacting the creativity of the output.\",\n} as const;\n\nconst TOP_P = {\n type: \"range\",\n title: \"Top P\",\n description:\n \"Selects a subset of likely tokens for generation, restricting choices to the top-P fraction of possibilities, \\\n such as the top 10% when P=0.1. \\\n This approach can limit the variety of the output. By default, it's set to 1, indicating no restriction. \\\n It's advised to adjust this parameter or temperature to modulate output diversity, but not to modify both simultaneously.\",\n} as const;\n\nconst TOP_K = {\n type: \"range\",\n title: \"Top K\",\n description:\n \"Select only from the highest K probabilities for each following word, effectively eliminating the less likely 'long tail' options.\",\n} as const;\n\nconst MIN_P = {\n type: \"range\",\n title: \"Min P\",\n description:\n \"Specifies the minimum probability a token must have to be considered, in relation to the probability of the most likely token. \\\n (This value varies based on the confidence level of the top token.) \\\n For example, if Min-P is set to 0.1, only tokens with at least 1/10th the probability of the highest-ranked token will be considered.\",\n} as const;\n\nconst FREQUENCY_PENALTY = {\n type: \"range\",\n title: \"Frequency penalty\",\n description:\n \"Minimize redundancy.\\\n By assigning a penalty to frequently used tokens within the text, the likelihood of repeating identical phrases is reduced. \\\n The default setting for this penalty is zero.\",\n} as const;\n\nconst PRESENCE_PENALTY = {\n type: \"range\",\n title: \"Presence penalty\",\n description:\n \"Enhance the introduction of novel subjects by reducing the preference for tokens that have already appeared in the text, \\\n thus boosting the chances of exploring fresh topics. \\\n The standard setting for this is zero.\",\n} as const;\n\nconst SEED = {\n type: \"range\",\n title: \"Seed\",\n description:\n \"When seed is fixed to a specific value, the model makes a best effort to provide the same response for repeated requests. \\\n Deterministic output isn't guaranteed. \\\n Also, changing the model or parameter settings, such as the temperature, \\\n can cause variations in the response even when you use the same seed value. \\\n By default, a random seed value is used.\",\n} as const;\n\nconst REPETITION_PENALTY = {\n type: \"range\",\n title: \"Repetition penalty\",\n description:\n \"Reduces the likelihood of repeating tokens from the input. \\\n Increasing this value makes the model less prone to repetition, but setting it too high may lead to less coherent output, \\\n often resulting in run-on sentences missing smaller words. \\\n The token penalty is scaled according to the original token's probability.\",\n} as const;\n\nconst LOG_PROBS = {\n type: \"boolean\",\n title: \"Log probs\",\n description:\n \"Whether to return log probabilities of the output tokens or not. If true, returns the log probabilities of each output token returned.\",\n} as const;\n\nconst TOP_LOG_PROBS = {\n type: \"range\",\n title: \"Top log probs\",\n description:\n \"The number of most likely tokens to return at each token position, each with an associated log probability. \\\n 'logprobs' must be set to true if this parameter is used.\",\n} as const;\n\nconst ECHO = {\n type: \"boolean\",\n title: \"Echo\",\n description: \"If true, the response will contain the prompt.\",\n} as const;\n\nconst RESPONSE_FORMAT = {\n type: \"select\",\n title: \"Response format\",\n description:\n \"Choose the response format of your model. For JSON, you must include the string 'JSON' in some form within your system / user prompt.\",\n} as const;\n\nconst RESPONSE_FORMAT_WITH_SCHEMA = {\n type: \"select\",\n title: \"Response format\",\n description:\n \"Choose the response format of your model. 'json_object' colloquially known as JSON mode, instructs the model to respond with a valid \\\n JSON (must include the term 'json' in prompt). 'json_schema' colloquially known as structured outputs, allows you to specify a strict \\\n response schema that the model will adhere to.\",\n} as const;\n\nconst RESPONSE_SCHEMA = {\n type: \"object\",\n title: \"Response schema\",\n description: \"When response format is set to 'json_schema', the model will return a JSON object of the specified schema.\",\n} as const;\n\nconst MCP_SERVERS = {\n type: \"object\",\n title: \"MCP servers\",\n description: \"MCP servers to use for the model.\",\n} as const;\n\nconst CHAT_CONFIG = {\n TEMPERATURE,\n MAX_TOKENS,\n STOP,\n TOP_A,\n TOP_P,\n TOP_K,\n MIN_P,\n FREQUENCY_PENALTY,\n PRESENCE_PENALTY,\n REPETITION_PENALTY,\n SEED,\n LOG_PROBS,\n TOP_LOG_PROBS,\n ECHO,\n RESPONSE_FORMAT,\n RESPONSE_FORMAT_WITH_SCHEMA,\n RESPONSE_SCHEMA,\n MAX_REASONING_TOKENS,\n MCP_SERVERS,\n};\n\nexport { CHAT_CONFIG };\n","const removeUndefinedEntries = <T = unknown>(record: Record<string, T | undefined>): Record<string, T> => {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n return Object.fromEntries(Object.entries(record).filter(([_, value]) => value != null)) as Record<string, T>;\n};\n\nexport { removeUndefinedEntries };\n","import { isRunningInBrowser } from \"./is-running-in-browser\";\n\nconst convertBase64ToUint8Array = (base64String: string): Uint8Array => {\n const base64Url = base64String.replace(/-/g, \"+\").replace(/_/g, \"/\");\n const latin1string = globalThis.atob(base64Url);\n return Uint8Array.from(latin1string, (byte) => byte.codePointAt(0)!);\n};\n\nconst convertUint8ArrayToBase64 = (array: Uint8Array): string => {\n let latin1string = \"\";\n\n // Note: regular for loop to support older JavaScript versions that\n // do not support for..of on Uint8Array\n for (let i = 0; i < array.length; i++) {\n latin1string += String.fromCodePoint(array[i]);\n }\n\n return globalThis.btoa(latin1string);\n};\n\nconst encodedBase64ToString = (base64: string): string => {\n if (isRunningInBrowser()) {\n const binaryString = atob(base64);\n const bytes = new Uint8Array(binaryString.length);\n for (let i = 0; i < binaryString.length; i++) {\n bytes[i] = binaryString.charCodeAt(i);\n }\n const decoder = new TextDecoder(\"utf-8\");\n return decoder.decode(bytes);\n } else {\n return Buffer.from(base64, \"base64\").toString(\"utf-8\");\n }\n};\n\nconst getMimeTypeFromBase64 = (base64: string): string => {\n const mimeTypePrefix = base64.split(\";\")[0];\n const mimeType = mimeTypePrefix.split(\"/\")[1];\n return mimeType;\n};\n\nexport { convertBase64ToUint8Array, convertUint8ArrayToBase64, encodedBase64ToString, getMimeTypeFromBase64 };\n","const urlWithoutTrailingSlash = (url: string): string => {\n return url?.replace(/\\/$/, \"\");\n};\n\nexport { urlWithoutTrailingSlash };\n","import { CHAT_CONFIG, MultiStringConfigItem, RangeConfigItem, SelectBooleanConfigItem, SelectStringConfigItem } from \"@adaline/provider\";\n\nconst temperature = RangeConfigItem({\n param: \"temperature\",\n title: CHAT_CONFIG.TEMPERATURE.title,\n description: CHAT_CONFIG.TEMPERATURE.description,\n min: 0,\n max: 2,\n step: 0.01,\n default: 1,\n});\n\nconst maxTokens = (maxOutputTokens: number) =>\n RangeConfigItem({\n param: \"max_tokens\",\n title: CHAT_CONFIG.MAX_TOKENS.title,\n description: CHAT_CONFIG.MAX_TOKENS.description,\n min: 0,\n max: maxOutputTokens,\n step: 1,\n default: 0,\n });\n\nconst stop = (maxSequences: number) =>\n MultiStringConfigItem({\n param: \"stop\",\n title: CHAT_CONFIG.STOP(maxSequences).title,\n description: CHAT_CONFIG.STOP(maxSequences).description,\n max: maxSequences,\n });\n\nconst topA = RangeConfigItem({\n param: \"top_a\",\n title: CHAT_CONFIG.TOP_A.title,\n description: CHAT_CONFIG.TOP_A.description,\n min: 0,\n max: 1,\n step: 0.01,\n default: 0,\n});\n\nconst topK = RangeConfigItem({\n param: \"top_k\",\n title: CHAT_CONFIG.TOP_K.title,\n description: CHAT_CONFIG.TOP_K.description,\n min: 0,\n max: 100,\n step: 1,\n default: 0,\n});\n\nconst topP = RangeConfigItem({\n param: \"top_p\",\n title: CHAT_CONFIG.TOP_P.title,\n description: CHAT_CONFIG.TOP_P.description,\n min: 0,\n max: 1,\n step: 0.01,\n default: 1,\n});\n\nconst minP = RangeConfigItem({\n param: \"min_p\",\n title: CHAT_CONFIG.MIN_P.title,\n description: CHAT_CONFIG.MIN_P.description,\n min: 0,\n max: 1,\n step: 0.01,\n default: 0,\n});\n\nconst frequencyPenalty = RangeConfigItem({\n param: \"frequency_penalty\",\n title: CHAT_CONFIG.FREQUENCY_PENALTY.title,\n description: CHAT_CONFIG.FREQUENCY_PENALTY.description,\n min: -2,\n max: 2,\n step: 0.01,\n default: 0,\n});\n\nconst presencePenalty = RangeConfigItem({\n param: \"presence_penalty\",\n title: CHAT_CONFIG.PRESENCE_PENALTY.title,\n description: CHAT_CONFIG.PRESENCE_PENALTY.description,\n min: -2,\n max: 2,\n step: 0.01,\n default: 0,\n});\n\nconst repetitionPenalty = RangeConfigItem({\n param: \"repetition_penalty\",\n title: CHAT_CONFIG.REPETITION_PENALTY.title,\n description: CHAT_CONFIG.REPETITION_PENALTY.description,\n min: 0,\n max: 2,\n step: 0.01,\n default: 0,\n});\n\nconst seed = RangeConfigItem({\n param: \"seed\",\n title: CHAT_CONFIG.SEED.title,\n description: CHAT_CONFIG.SEED.description,\n min: 0,\n max: 1000000,\n step: 1,\n default: 0,\n});\n\nconst logProbs = SelectBooleanConfigItem({\n param: \"logprobs\",\n title: CHAT_CONFIG.LOG_PROBS.title,\n description: CHAT_CONFIG.LOG_PROBS.description,\n default: false,\n});\n\nconst topLogProbs = RangeConfigItem({\n param: \"top_logprobs\",\n title: CHAT_CONFIG.TOP_LOG_PROBS.title,\n description: CHAT_CONFIG.TOP_LOG_PROBS.description,\n min: 0,\n max: 20,\n step: 1,\n default: 0,\n});\n\nconst toolChoice = SelectStringConfigItem({\n param: \"tool_choice\",\n title: \"Tool choice\",\n description:\n \"Controls which (if any) tool is called by the model. \\\n 'none' means the model will not call a function. \\\n 'auto' means the model can pick between generating a message or calling a tool.\",\n default: \"auto\",\n choices: [\"auto\", \"required\", \"none\"],\n});\n\nconst responseFormat = SelectStringConfigItem({\n param: \"response_format\",\n title: CHAT_CONFIG.RESPONSE_FORMAT.title,\n description: CHAT_CONFIG.RESPONSE_FORMAT.description,\n default: \"text\",\n choices: [\"text\", \"json_object\"],\n});\n\nexport {\n frequencyPenalty,\n logProbs,\n maxTokens,\n presencePenalty,\n repetitionPenalty,\n seed,\n stop,\n temperature,\n toolChoice,\n topLogProbs,\n topP,\n topA,\n topK,\n minP,\n responseFormat,\n};\n","import { ChatModelBaseConfigDef, ChatModelBaseConfigSchema } from \"./chat-model\";\n\nconst OpenRouterChatModelConfigs = {\n base: (maxOutputTokens: number, maxSequences: number) => ({\n def: ChatModelBaseConfigDef(maxOutputTokens, maxSequences),\n schema: ChatModelBaseConfigSchema(maxOutputTokens, maxSequences),\n }),\n} as const;\n\nexport { OpenRouterChatModelConfigs };\n","import { z } from \"zod\";\n\nimport { ChatModelSchemaType, ChatModelV1, EmbeddingModelSchemaType, EmbeddingModelV1, ProviderError, ProviderV1 } from \"@adaline/provider\";\n\nimport { BaseChatModel, BaseChatModelOptions, BaseChatModelSchema, type BaseChatModelOptionsType } from \"../models/chat-models\";\n\nconst ProviderLiteral = \"open-router\";\nclass OpenRouter<C extends BaseChatModelOptionsType, E extends Record<string, any> = Record<string, any>> implements ProviderV1<C, E> {\n readonly version = \"v1\" as const;\n readonly name = ProviderLiteral;\n static readonly baseUrl = \"https://openrouter.ai/api/v1\";\n\n private readonly embeddingModelFactories: Record<\n string,\n {\n model: { new (options: any): EmbeddingModelV1 };\n modelOptions: z.ZodType<any>;\n modelSchema: EmbeddingModelSchemaType;\n }\n > = {};\n\n chatModelLiterals(): string[] {\n return [\"__base__\"];\n }\n\n chatModelSchemas(): Record<string, ChatModelSchemaType> {\n return {\n __base__: BaseChatModelSchema,\n };\n }\n\n chatModel(options: C): ChatModelV1 {\n const model = BaseChatModel;\n const parsedOptions = BaseChatModelOptions.parse(options);\n return new model(BaseChatModelSchema, parsedOptions);\n }\n\n embeddingModelLiterals(): string[] {\n return Object.keys(this.embeddingModelFactories);\n }\n\n embeddingModelSchemas(): Record<string, EmbeddingModelSchemaType> {\n return Object.keys(this.embeddingModelFactories).reduce(\n (acc, key) => {\n acc[key] = this.embeddingModelFactories[key].modelSchema;\n return acc;\n },\n {} as Record<string, EmbeddingModelSchemaType>\n );\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n embeddingModel(options: E): EmbeddingModelV1 {\n throw new ProviderError({\n info: \"Open Router does not support embedding models yet\",\n cause: new Error(\"Open Router does not support embedding models yet\"),\n });\n }\n}\n\nexport { OpenRouter };\n","{\n \"microsoft/mai-ds-r1:free\": {\n \"modelName\": \"microsoft/mai-ds-r1:free\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0,\n \"outputPricePerMillion\": 0\n }\n }\n }\n ]\n },\n \"google/gemini-2.5-pro-preview-03-25\": {\n \"modelName\": \"google/gemini-2.5-pro-preview-03-25\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 1.25,\n \"outputPricePerMillion\": 10\n }\n }\n }\n ]\n },\n \"thudm/glm-z1-32b:free\": {\n \"modelName\": \"thudm/glm-z1-32b:free\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0,\n \"outputPricePerMillion\": 0\n }\n }\n }\n ]\n },\n \"thudm/glm-4-32b:free\": {\n \"modelName\": \"thudm/glm-4-32b:free\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0,\n \"outputPricePerMillion\": 0\n }\n }\n }\n ]\n },\n \"google/gemini-2.5-flash-preview\": {\n \"modelName\": \"google/gemini-2.5-flash-preview\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.15,\n \"outputPricePerMillion\": 0.6\n }\n }\n }\n ]\n },\n \"google/gemini-2.5-flash-preview:thinking\": {\n \"modelName\": \"google/gemini-2.5-flash-preview:thinking\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.15,\n \"outputPricePerMillion\": 3.5\n }\n }\n }\n ]\n },\n \"openai/o4-mini-high\": {\n \"modelName\": \"openai/o4-mini-high\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 1.1,\n \"outputPricePerMillion\": 4.4\n }\n }\n }\n ]\n },\n \"openai/o3\": {\n \"modelName\": \"openai/o3\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 10,\n \"outputPricePerMillion\": 40\n }\n }\n }\n ]\n },\n \"openai/o4-mini\": {\n \"modelName\": \"openai/o4-mini\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 1.1,\n \"outputPricePerMillion\": 4.4\n }\n }\n }\n ]\n },\n \"shisa-ai/shisa-v2-llama3.3-70b:free\": {\n \"modelName\": \"shisa-ai/shisa-v2-llama3.3-70b:free\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0,\n \"outputPricePerMillion\": 0\n }\n }\n }\n ]\n },\n \"qwen/qwen2.5-coder-7b-instruct\": {\n \"modelName\": \"qwen/qwen2.5-coder-7b-instruct\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.19999999999999998,\n \"outputPricePerMillion\": 0.19999999999999998\n }\n }\n }\n ]\n },\n \"openai/gpt-4.1\": {\n \"modelName\": \"openai/gpt-4.1\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 2,\n \"outputPricePerMillion\": 8\n }\n }\n }\n ]\n },\n \"openai/gpt-4.1-mini\": {\n \"modelName\": \"openai/gpt-4.1-mini\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.39999999999999997,\n \"outputPricePerMillion\": 1.5999999999999999\n }\n }\n }\n ]\n },\n \"openai/gpt-4.1-nano\": {\n \"modelName\": \"openai/gpt-4.1-nano\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.09999999999999999,\n \"outputPricePerMillion\": 0.39999999999999997\n }\n }\n }\n ]\n },\n \"eleutherai/llemma_7b\": {\n \"modelName\": \"eleutherai/llemma_7b\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.7999999999999999,\n \"outputPricePerMillion\": 1.2\n }\n }\n }\n ]\n },\n \"alfredpros/codellama-7b-instruct-solidity\": {\n \"modelName\": \"alfredpros/codellama-7b-instruct-solidity\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.7999999999999999,\n \"outputPricePerMillion\": 1.2\n }\n }\n }\n ]\n },\n \"arliai/qwq-32b-arliai-rpr-v1:free\": {\n \"modelName\": \"arliai/qwq-32b-arliai-rpr-v1:free\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0,\n \"outputPricePerMillion\": 0\n }\n }\n }\n ]\n },\n \"agentica-org/deepcoder-14b-preview:free\": {\n \"modelName\": \"agentica-org/deepcoder-14b-preview:free\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0,\n \"outputPricePerMillion\": 0\n }\n }\n }\n ]\n },\n \"moonshotai/kimi-vl-a3b-thinking:free\": {\n \"modelName\": \"moonshotai/kimi-vl-a3b-thinking:free\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0,\n \"outputPricePerMillion\": 0\n }\n }\n }\n ]\n },\n \"x-ai/grok-3-mini-beta\": {\n \"modelName\": \"x-ai/grok-3-mini-beta\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.3,\n \"outputPricePerMillion\": 0.5\n }\n }\n }\n ]\n },\n \"x-ai/grok-3-beta\": {\n \"modelName\": \"x-ai/grok-3-beta\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 3,\n \"outputPricePerMillion\": 15\n }\n }\n }\n ]\n },\n \"nvidia/llama-3.1-nemotron-nano-8b-v1:free\": {\n \"modelName\": \"nvidia/llama-3.1-nemotron-nano-8b-v1:free\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0,\n \"outputPricePerMillion\": 0\n }\n }\n }\n ]\n },\n \"nvidia/llama-3.3-nemotron-super-49b-v1:free\": {\n \"modelName\": \"nvidia/llama-3.3-nemotron-super-49b-v1:free\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0,\n \"outputPricePerMillion\": 0\n }\n }\n }\n ]\n },\n \"nvidia/llama-3.1-nemotron-ultra-253b-v1:free\": {\n \"modelName\": \"nvidia/llama-3.1-nemotron-ultra-253b-v1:free\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0,\n \"outputPricePerMillion\": 0\n }\n }\n }\n ]\n },\n \"meta-llama/llama-4-maverick:free\": {\n \"modelName\": \"meta-llama/llama-4-maverick:free\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0,\n \"outputPricePerMillion\": 0\n }\n }\n }\n ]\n },\n \"meta-llama/llama-4-maverick\": {\n \"modelName\": \"meta-llama/llama-4-maverick\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.16999999999999998,\n \"outputPricePerMillion\": 0.6\n }\n }\n }\n ]\n },\n \"meta-llama/llama-4-scout:free\": {\n \"modelName\": \"meta-llama/llama-4-scout:free\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0,\n \"outputPricePerMillion\": 0\n }\n }\n }\n ]\n },\n \"meta-llama/llama-4-scout\": {\n \"modelName\": \"meta-llama/llama-4-scout\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.08,\n \"outputPricePerMillion\": 0.3\n }\n }\n }\n ]\n },\n \"all-hands/openhands-lm-32b-v0.1\": {\n \"modelName\": \"all-hands/openhands-lm-32b-v0.1\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 2.6,\n \"outputPricePerMillion\": 3.4\n }\n }\n }\n ]\n },\n \"mistral/ministral-8b\": {\n \"modelName\": \"mistral/ministral-8b\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.09999999999999999,\n \"outputPricePerMillion\": 0.09999999999999999\n }\n }\n }\n ]\n },\n \"deepseek/deepseek-v3-base:free\": {\n \"modelName\": \"deepseek/deepseek-v3-base:free\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0,\n \"outputPricePerMillion\": 0\n }\n }\n }\n ]\n },\n \"scb10x/llama3.1-typhoon2-8b-instruct\": {\n \"modelName\": \"scb10x/llama3.1-typhoon2-8b-instruct\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.18,\n \"outputPricePerMillion\": 0.18\n }\n }\n }\n ]\n },\n \"scb10x/llama3.1-typhoon2-70b-instruct\": {\n \"modelName\": \"scb10x/llama3.1-typhoon2-70b-instruct\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.88,\n \"outputPricePerMillion\": 0.88\n }\n }\n }\n ]\n },\n \"allenai/molmo-7b-d:free\": {\n \"modelName\": \"allenai/molmo-7b-d:free\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0,\n \"outputPricePerMillion\": 0\n }\n }\n }\n ]\n },\n \"bytedance-research/ui-tars-72b:free\": {\n \"modelName\": \"bytedance-research/ui-tars-72b:free\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0,\n \"outputPricePerMillion\": 0\n }\n }\n }\n ]\n },\n \"qwen/qwen2.5-vl-3b-instruct:free\": {\n \"modelName\": \"qwen/qwen2.5-vl-3b-instruct:free\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0,\n \"outputPricePerMillion\": 0\n }\n }\n }\n ]\n },\n \"google/gemini-2.5-pro-exp-03-25:free\": {\n \"modelName\": \"google/gemini-2.5-pro-exp-03-25:free\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0,\n \"outputPricePerMillion\": 0\n }\n }\n }\n ]\n },\n \"qwen/qwen2.5-vl-32b-instruct:free\": {\n \"modelName\": \"qwen/qwen2.5-vl-32b-instruct:free\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0,\n \"outputPricePerMillion\": 0\n }\n }\n }\n ]\n },\n \"qwen/qwen2.5-vl-32b-instruct\": {\n \"modelName\": \"qwen/qwen2.5-vl-32b-instruct\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.8999999999999999,\n \"outputPricePerMillion\": 0.8999999999999999\n }\n }\n }\n ]\n },\n \"deepseek/deepseek-chat-v3-0324:free\": {\n \"modelName\": \"deepseek/deepseek-chat-v3-0324:free\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0,\n \"outputPricePerMillion\": 0\n }\n }\n }\n ]\n },\n \"deepseek/deepseek-chat-v3-0324\": {\n \"modelName\": \"deepseek/deepseek-chat-v3-0324\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.27,\n \"outputPricePerMillion\": 1.1\n }\n }\n }\n ]\n },\n \"featherless/qwerky-72b:free\": {\n \"modelName\": \"featherless/qwerky-72b:free\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0,\n \"outputPricePerMillion\": 0\n }\n }\n }\n ]\n },\n \"openai/o1-pro\": {\n \"modelName\": \"openai/o1-pro\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 150,\n \"outputPricePerMillion\": 600\n }\n }\n }\n ]\n },\n \"mistralai/mistral-small-3.1-24b-instruct:free\": {\n \"modelName\": \"mistralai/mistral-small-3.1-24b-instruct:free\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0,\n \"outputPricePerMillion\": 0\n }\n }\n }\n ]\n },\n \"mistralai/mistral-small-3.1-24b-instruct\": {\n \"modelName\": \"mistralai/mistral-small-3.1-24b-instruct\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.09999999999999999,\n \"outputPricePerMillion\": 0.3\n }\n }\n }\n ]\n },\n \"open-r1/olympiccoder-32b:free\": {\n \"modelName\": \"open-r1/olympiccoder-32b:free\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0,\n \"outputPricePerMillion\": 0\n }\n }\n }\n ]\n },\n \"steelskull/l3.3-electra-r1-70b\": {\n \"modelName\": \"steelskull/l3.3-electra-r1-70b\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.7,\n \"outputPricePerMillion\": 0.95\n }\n }\n }\n ]\n },\n \"google/gemma-3-1b-it:free\": {\n \"modelName\": \"google/gemma-3-1b-it:free\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0,\n \"outputPricePerMillion\": 0\n }\n }\n }\n ]\n },\n \"google/gemma-3-4b-it:free\": {\n \"modelName\": \"google/gemma-3-4b-it:free\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0,\n \"outputPricePerMillion\": 0\n }\n }\n }\n ]\n },\n \"google/gemma-3-4b-it\": {\n \"modelName\": \"google/gemma-3-4b-it\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.02,\n \"outputPricePerMillion\": 0.04\n }\n }\n }\n ]\n },\n \"ai21/jamba-1.6-large\": {\n \"modelName\": \"ai21/jamba-1.6-large\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 2,\n \"outputPricePerMillion\": 8\n }\n }\n }\n ]\n },\n \"ai21/jamba-1.6-mini\": {\n \"modelName\": \"ai21/jamba-1.6-mini\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.19999999999999998,\n \"outputPricePerMillion\": 0.39999999999999997\n }\n }\n }\n ]\n },\n \"google/gemma-3-12b-it:free\": {\n \"modelName\": \"google/gemma-3-12b-it:free\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0,\n \"outputPricePerMillion\": 0\n }\n }\n }\n ]\n },\n \"google/gemma-3-12b-it\": {\n \"modelName\": \"google/gemma-3-12b-it\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.049999999999999996,\n \"outputPricePerMillion\": 0.09999999999999999\n }\n }\n }\n ]\n },\n \"cohere/command-a\": {\n \"modelName\": \"cohere/command-a\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 2.5,\n \"outputPricePerMillion\": 10\n }\n }\n }\n ]\n },\n \"openai/gpt-4o-mini-search-preview\": {\n \"modelName\": \"openai/gpt-4o-mini-search-preview\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.15,\n \"outputPricePerMillion\": 0.6\n }\n }\n }\n ]\n },\n \"openai/gpt-4o-search-preview\": {\n \"modelName\": \"openai/gpt-4o-search-preview\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 2.5,\n \"outputPricePerMillion\": 10\n }\n }\n }\n ]\n },\n \"rekaai/reka-flash-3:free\": {\n \"modelName\": \"rekaai/reka-flash-3:free\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0,\n \"outputPricePerMillion\": 0\n }\n }\n }\n ]\n },\n \"google/gemma-3-27b-it:free\": {\n \"modelName\": \"google/gemma-3-27b-it:free\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0,\n \"outputPricePerMillion\": 0\n }\n }\n }\n ]\n },\n \"google/gemma-3-27b-it\": {\n \"modelName\": \"google/gemma-3-27b-it\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.09999999999999999,\n \"outputPricePerMillion\": 0.19999999999999998\n }\n }\n }\n ]\n },\n \"thedrummer/anubis-pro-105b-v1\": {\n \"modelName\": \"thedrummer/anubis-pro-105b-v1\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.7999999999999999,\n \"outputPricePerMillion\": 1\n }\n }\n }\n ]\n },\n \"latitudegames/wayfarer-large-70b-llama-3.3\": {\n \"modelName\": \"latitudegames/wayfarer-large-70b-llama-3.3\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.7999999999999999,\n \"outputPricePerMillion\": 0.8999999999999999\n }\n }\n }\n ]\n },\n \"thedrummer/skyfall-36b-v2\": {\n \"modelName\": \"thedrummer/skyfall-36b-v2\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.5,\n \"outputPricePerMillion\": 0.7999999999999999\n }\n }\n }\n ]\n },\n \"microsoft/phi-4-multimodal-instruct\": {\n \"modelName\": \"microsoft/phi-4-multimodal-instruct\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.049999999999999996,\n \"outputPricePerMillion\": 0.09999999999999999\n }\n }\n }\n ]\n },\n \"perplexity/sonar-reasoning-pro\": {\n \"modelName\": \"perplexity/sonar-reasoning-pro\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 2,\n \"outputPricePerMillion\": 8\n }\n }\n }\n ]\n },\n \"perplexity/sonar-pro\": {\n \"modelName\": \"perplexity/sonar-pro\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 3,\n \"outputPricePerMillion\": 15\n }\n }\n }\n ]\n },\n \"perplexity/sonar-deep-research\": {\n \"modelName\": \"perplexity/sonar-deep-research\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 2,\n \"outputPricePerMillion\": 8\n }\n }\n }\n ]\n },\n \"deepseek/deepseek-r1-zero:free\": {\n \"modelName\": \"deepseek/deepseek-r1-zero:free\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0,\n \"outputPricePerMillion\": 0\n }\n }\n }\n ]\n },\n \"qwen/qwq-32b:free\": {\n \"modelName\": \"qwen/qwq-32b:free\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0,\n \"outputPricePerMillion\": 0\n }\n }\n }\n ]\n },\n \"qwen/qwq-32b\": {\n \"modelName\": \"qwen/qwq-32b\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.15,\n \"outputPricePerMillion\": 0.19999999999999998\n }\n }\n }\n ]\n },\n \"moonshotai/moonlight-16b-a3b-instruct:free\": {\n \"modelName\": \"moonshotai/moonlight-16b-a3b-instruct:free\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0,\n \"outputPricePerMillion\": 0\n }\n }\n }\n ]\n },\n \"nousresearch/deephermes-3-llama-3-8b-preview:free\": {\n \"modelName\": \"nousresearch/deephermes-3-llama-3-8b-preview:free\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0,\n \"outputPricePerMillion\": 0\n }\n }\n }\n ]\n },\n \"openai/gpt-4.5-preview\": {\n \"modelName\": \"openai/gpt-4.5-preview\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 75,\n \"outputPricePerMillion\": 150\n }\n }\n }\n ]\n },\n \"google/gemini-2.0-flash-lite-001\": {\n \"modelName\": \"google/gemini-2.0-flash-lite-001\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.075,\n \"outputPricePerMillion\": 0.3\n }\n }\n }\n ]\n },\n \"anthropic/claude-3.7-sonnet\": {\n \"modelName\": \"anthropic/claude-3.7-sonnet\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 3,\n \"outputPricePerMillion\": 15\n }\n }\n }\n ]\n },\n \"anthropic/claude-3.7-sonnet:thinking\": {\n \"modelName\": \"anthropic/claude-3.7-sonnet:thinking\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 3,\n \"outputPricePerMillion\": 15\n }\n }\n }\n ]\n },\n \"anthropic/claude-3.7-sonnet:beta\": {\n \"modelName\": \"anthropic/claude-3.7-sonnet:beta\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 3,\n \"outputPricePerMillion\": 15\n }\n }\n }\n ]\n },\n \"perplexity/r1-1776\": {\n \"modelName\": \"perplexity/r1-1776\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 2,\n \"outputPricePerMillion\": 8\n }\n }\n }\n ]\n },\n \"mistralai/mistral-saba\": {\n \"modelName\": \"mistralai/mistral-saba\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.19999999999999998,\n \"outputPricePerMillion\": 0.6\n }\n }\n }\n ]\n },\n \"cognitivecomputations/dolphin3.0-r1-mistral-24b:free\": {\n \"modelName\": \"cognitivecomputations/dolphin3.0-r1-mistral-24b:free\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0,\n \"outputPricePerMillion\": 0\n }\n }\n }\n ]\n },\n \"cognitivecomputations/dolphin3.0-mistral-24b:free\": {\n \"modelName\": \"cognitivecomputations/dolphin3.0-mistral-24b:free\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0,\n \"outputPricePerMillion\": 0\n }\n }\n }\n ]\n },\n \"meta-llama/llama-guard-3-8b\": {\n \"modelName\": \"meta-llama/llama-guard-3-8b\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.055,\n \"outputPricePerMillion\": 0.055\n }\n }\n }\n ]\n },\n \"openai/o3-mini-high\": {\n \"modelName\": \"openai/o3-mini-high\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 1.1,\n \"outputPricePerMillion\": 4.4\n }\n }\n }\n ]\n },\n \"deepseek/deepseek-r1-distill-llama-8b\": {\n \"modelName\": \"deepseek/deepseek-r1-distill-llama-8b\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.04,\n \"outputPricePerMillion\": 0.04\n }\n }\n }\n ]\n },\n \"google/gemini-2.0-flash-001\": {\n \"modelName\": \"google/gemini-2.0-flash-001\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.09999999999999999,\n \"outputPricePerMillion\": 0.39999999999999997\n }\n }\n }\n ]\n },\n \"qwen/qwen-vl-plus\": {\n \"modelName\": \"qwen/qwen-vl-plus\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.21,\n \"outputPricePerMillion\": 0.63\n }\n }\n }\n ]\n },\n \"aion-labs/aion-1.0\": {\n \"modelName\": \"aion-labs/aion-1.0\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 4,\n \"outputPricePerMillion\": 8\n }\n }\n }\n ]\n },\n \"aion-labs/aion-1.0-mini\": {\n \"modelName\": \"aion-labs/aion-1.0-mini\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.7,\n \"outputPricePerMillion\": 1.4\n }\n }\n }\n ]\n },\n \"aion-labs/aion-rp-llama-3.1-8b\": {\n \"modelName\": \"aion-labs/aion-rp-llama-3.1-8b\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.19999999999999998,\n \"outputPricePerMillion\": 0.19999999999999998\n }\n }\n }\n ]\n },\n \"qwen/qwen-vl-max\": {\n \"modelName\": \"qwen/qwen-vl-max\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.7999999999999999,\n \"outputPricePerMillion\": 3.1999999999999997\n }\n }\n }\n ]\n },\n \"qwen/qwen-turbo\": {\n \"modelName\": \"qwen/qwen-turbo\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.049999999999999996,\n \"outputPricePerMillion\": 0.19999999999999998\n }\n }\n }\n ]\n },\n \"qwen/qwen2.5-vl-72b-instruct:free\": {\n \"modelName\": \"qwen/qwen2.5-vl-72b-instruct:free\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0,\n \"outputPricePerMillion\": 0\n }\n }\n }\n ]\n },\n \"qwen/qwen2.5-vl-72b-instruct\": {\n \"modelName\": \"qwen/qwen2.5-vl-72b-instruct\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.7,\n \"outputPricePerMillion\": 0.7\n }\n }\n }\n ]\n },\n \"qwen/qwen-plus\": {\n \"modelName\": \"qwen/qwen-plus\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.39999999999999997,\n \"outputPricePerMillion\": 1.2\n }\n }\n }\n ]\n },\n \"qwen/qwen-max\": {\n \"modelName\": \"qwen/qwen-max\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 1.5999999999999999,\n \"outputPricePerMillion\": 6.3999999999999995\n }\n }\n }\n ]\n },\n \"openai/o3-mini\": {\n \"modelName\": \"openai/o3-mini\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 1.1,\n \"outputPricePerMillion\": 4.4\n }\n }\n }\n ]\n },\n \"deepseek/deepseek-r1-distill-qwen-1.5b\": {\n \"modelName\": \"deepseek/deepseek-r1-distill-qwen-1.5b\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.18,\n \"outputPricePerMillion\": 0.18\n }\n }\n }\n ]\n },\n \"mistralai/mistral-small-24b-instruct-2501:free\": {\n \"modelName\": \"mistralai/mistral-small-24b-instruct-2501:free\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0,\n \"outputPricePerMillion\": 0\n }\n }\n }\n ]\n },\n \"mistralai/mistral-small-24b-instruct-2501\": {\n \"modelName\": \"mistralai/mistral-small-24b-instruct-2501\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.07,\n \"outputPricePerMillion\": 0.14\n }\n }\n }\n ]\n },\n \"deepseek/deepseek-r1-distill-qwen-32b:free\": {\n \"modelName\": \"deepseek/deepseek-r1-distill-qwen-32b:free\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0,\n \"outputPricePerMillion\": 0\n }\n }\n }\n ]\n },\n \"deepseek/deepseek-r1-distill-qwen-32b\": {\n \"modelName\": \"deepseek/deepseek-r1-distill-qwen-32b\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.12,\n \"outputPricePerMillion\": 0.18\n }\n }\n }\n ]\n },\n \"deepseek/deepseek-r1-distill-qwen-14b:free\": {\n \"modelName\": \"deepseek/deepseek-r1-distill-qwen-14b:free\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0,\n \"outputPricePerMillion\": 0\n }\n }\n }\n ]\n },\n \"deepseek/deepseek-r1-distill-qwen-14b\": {\n \"modelName\": \"deepseek/deepseek-r1-distill-qwen-14b\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.15,\n \"outputPricePerMillion\": 0.15\n }\n }\n }\n ]\n },\n \"perplexity/sonar-reasoning\": {\n \"modelName\": \"perplexity/sonar-reasoning\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 1,\n \"outputPricePerMillion\": 5\n }\n }\n }\n ]\n },\n \"perplexity/sonar\": {\n \"modelName\": \"perplexity/sonar\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 1,\n \"outputPricePerMillion\": 1\n }\n }\n }\n ]\n },\n \"liquid/lfm-7b\": {\n \"modelName\": \"liquid/lfm-7b\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.01,\n \"outputPricePerMillion\": 0.01\n }\n }\n }\n ]\n },\n \"liquid/lfm-3b\": {\n \"modelName\": \"liquid/lfm-3b\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.02,\n \"outputPricePerMillion\": 0.02\n }\n }\n }\n ]\n },\n \"deepseek/deepseek-r1-distill-llama-70b:free\": {\n \"modelName\": \"deepseek/deepseek-r1-distill-llama-70b:free\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0,\n \"outputPricePerMillion\": 0\n }\n }\n }\n ]\n },\n \"deepseek/deepseek-r1-distill-llama-70b\": {\n \"modelName\": \"deepseek/deepseek-r1-distill-llama-70b\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.09999999999999999,\n \"outputPricePerMillion\": 0.39999999999999997\n }\n }\n }\n ]\n },\n \"deepseek/deepseek-r1:free\": {\n \"modelName\": \"deepseek/deepseek-r1:free\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0,\n \"outputPricePerMillion\": 0\n }\n }\n }\n ]\n },\n \"deepseek/deepseek-r1\": {\n \"modelName\": \"deepseek/deepseek-r1\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.5,\n \"outputPricePerMillion\": 2.1799999999999997\n }\n }\n }\n ]\n },\n \"sophosympatheia/rogue-rose-103b-v0.2:free\": {\n \"modelName\": \"sophosympatheia/rogue-rose-103b-v0.2:free\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0,\n \"outputPricePerMillion\": 0\n }\n }\n }\n ]\n },\n \"minimax/minimax-01\": {\n \"modelName\": \"minimax/minimax-01\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.19999999999999998,\n \"outputPricePerMillion\": 1.1\n }\n }\n }\n ]\n },\n \"mistralai/codestral-2501\": {\n \"modelName\": \"mistralai/codestral-2501\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.3,\n \"outputPricePerMillion\": 0.8999999999999999\n }\n }\n }\n ]\n },\n \"microsoft/phi-4\": {\n \"modelName\": \"microsoft/phi-4\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.07,\n \"outputPricePerMillion\": 0.14\n }\n }\n }\n ]\n },\n \"deepseek/deepseek-chat:free\": {\n \"modelName\": \"deepseek/deepseek-chat:free\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0,\n \"outputPricePerMillion\": 0\n }\n }\n }\n ]\n },\n \"deepseek/deepseek-chat\": {\n \"modelName\": \"deepseek/deepseek-chat\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.38,\n \"outputPricePerMillion\": 0.8899999999999999\n }\n }\n }\n ]\n },\n \"sao10k/l3.3-euryale-70b\": {\n \"modelName\": \"sao10k/l3.3-euryale-70b\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.7,\n \"outputPricePerMillion\": 0.7999999999999999\n }\n }\n }\n ]\n },\n \"openai/o1\": {\n \"modelName\": \"openai/o1\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 15,\n \"outputPricePerMillion\": 60\n }\n }\n }\n ]\n },\n \"eva-unit-01/eva-llama-3.33-70b\": {\n \"modelName\": \"eva-unit-01/eva-llama-3.33-70b\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 4,\n \"outputPricePerMillion\": 6\n }\n }\n }\n ]\n },\n \"x-ai/grok-2-vision-1212\": {\n \"modelName\": \"x-ai/grok-2-vision-1212\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 2,\n \"outputPricePerMillion\": 10\n }\n }\n }\n ]\n },\n \"x-ai/grok-2-1212\": {\n \"modelName\": \"x-ai/grok-2-1212\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 2,\n \"outputPricePerMillion\": 10\n }\n }\n }\n ]\n },\n \"cohere/command-r7b-12-2024\": {\n \"modelName\": \"cohere/command-r7b-12-2024\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.0375,\n \"outputPricePerMillion\": 0.15\n }\n }\n }\n ]\n },\n \"google/gemini-2.0-flash-exp:free\": {\n \"modelName\": \"google/gemini-2.0-flash-exp:free\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0,\n \"outputPricePerMillion\": 0\n }\n }\n }\n ]\n },\n \"meta-llama/llama-3.3-70b-instruct:free\": {\n \"modelName\": \"meta-llama/llama-3.3-70b-instruct:free\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0,\n \"outputPricePerMillion\": 0\n }\n }\n }\n ]\n },\n \"meta-llama/llama-3.3-70b-instruct\": {\n \"modelName\": \"meta-llama/llama-3.3-70b-instruct\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.09999999999999999,\n \"outputPricePerMillion\": 0.25\n }\n }\n }\n ]\n },\n \"amazon/nova-lite-v1\": {\n \"modelName\": \"amazon/nova-lite-v1\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.06,\n \"outputPricePerMillion\": 0.24\n }\n }\n }\n ]\n },\n \"amazon/nova-micro-v1\": {\n \"modelName\": \"amazon/nova-micro-v1\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.035,\n \"outputPricePerMillion\": 0.14\n }\n }\n }\n ]\n },\n \"amazon/nova-pro-v1\": {\n \"modelName\": \"amazon/nova-pro-v1\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.7999999999999999,\n \"outputPricePerMillion\": 3.1999999999999997\n }\n }\n }\n ]\n },\n \"qwen/qwq-32b-preview:free\": {\n \"modelName\": \"qwen/qwq-32b-preview:free\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0,\n \"outputPricePerMillion\": 0\n }\n }\n }\n ]\n },\n \"qwen/qwq-32b-preview\": {\n \"modelName\": \"qwen/qwq-32b-preview\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.19999999999999998,\n \"outputPricePerMillion\": 0.19999999999999998\n }\n }\n }\n ]\n },\n \"google/learnlm-1.5-pro-experimental:free\": {\n \"modelName\": \"google/learnlm-1.5-pro-experimental:free\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0,\n \"outputPricePerMillion\": 0\n }\n }\n }\n ]\n },\n \"eva-unit-01/eva-qwen-2.5-72b\": {\n \"modelName\": \"eva-unit-01/eva-qwen-2.5-72b\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.8999999999999999,\n \"outputPricePerMillion\": 1.2\n }\n }\n }\n ]\n },\n \"openai/gpt-4o-2024-11-20\": {\n \"modelName\": \"openai/gpt-4o-2024-11-20\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 2.5,\n \"outputPricePerMillion\": 10\n }\n }\n }\n ]\n },\n \"mistralai/mistral-large-2411\": {\n \"modelName\": \"mistralai/mistral-large-2411\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 2,\n \"outputPricePerMillion\": 6\n }\n }\n }\n ]\n },\n \"mistralai/mistral-large-2407\": {\n \"modelName\": \"mistralai/mistral-large-2407\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 2,\n \"outputPricePerMillion\": 6\n }\n }\n }\n ]\n },\n \"mistralai/pixtral-large-2411\": {\n \"modelName\": \"mistralai/pixtral-large-2411\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 2,\n \"outputPricePerMillion\": 6\n }\n }\n }\n ]\n },\n \"x-ai/grok-vision-beta\": {\n \"modelName\": \"x-ai/grok-vision-beta\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 5,\n \"outputPricePerMillion\": 15\n }\n }\n }\n ]\n },\n \"infermatic/mn-inferor-12b\": {\n \"modelName\": \"infermatic/mn-inferor-12b\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.7999999999999999,\n \"outputPricePerMillion\": 1.2\n }\n }\n }\n ]\n },\n \"qwen/qwen-2.5-coder-32b-instruct:free\": {\n \"modelName\": \"qwen/qwen-2.5-coder-32b-instruct:free\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0,\n \"outputPricePerMillion\": 0\n }\n }\n }\n ]\n },\n \"qwen/qwen-2.5-coder-32b-instruct\": {\n \"modelName\": \"qwen/qwen-2.5-coder-32b-instruct\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.07,\n \"outputPricePerMillion\": 0.15\n }\n }\n }\n ]\n },\n \"raifle/sorcererlm-8x22b\": {\n \"modelName\": \"raifle/sorcererlm-8x22b\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 4.5,\n \"outputPricePerMillion\": 4.5\n }\n }\n }\n ]\n },\n \"eva-unit-01/eva-qwen-2.5-32b\": {\n \"modelName\": \"eva-unit-01/eva-qwen-2.5-32b\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 2.6,\n \"outputPricePerMillion\": 3.4\n }\n }\n }\n ]\n },\n \"thedrummer/unslopnemo-12b\": {\n \"modelName\": \"thedrummer/unslopnemo-12b\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.5,\n \"outputPricePerMillion\": 0.5\n }\n }\n }\n ]\n },\n \"anthropic/claude-3.5-haiku:beta\": {\n \"modelName\": \"anthropic/claude-3.5-haiku:beta\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.7999999999999999,\n \"outputPricePerMillion\": 4\n }\n }\n }\n ]\n },\n \"anthropic/claude-3.5-haiku\": {\n \"modelName\": \"anthropic/claude-3.5-haiku\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.7999999999999999,\n \"outputPricePerMillion\": 4\n }\n }\n }\n ]\n },\n \"anthropic/claude-3.5-haiku-20241022:beta\": {\n \"modelName\": \"anthropic/claude-3.5-haiku-20241022:beta\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.7999999999999999,\n \"outputPricePerMillion\": 4\n }\n }\n }\n ]\n },\n \"anthropic/claude-3.5-haiku-20241022\": {\n \"modelName\": \"anthropic/claude-3.5-haiku-20241022\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.7999999999999999,\n \"outputPricePerMillion\": 4\n }\n }\n }\n ]\n },\n \"neversleep/llama-3.1-lumimaid-70b\": {\n \"modelName\": \"neversleep/llama-3.1-lumimaid-70b\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 1.5,\n \"outputPricePerMillion\": 2.25\n }\n }\n }\n ]\n },\n \"anthracite-org/magnum-v4-72b\": {\n \"modelName\": \"anthracite-org/magnum-v4-72b\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 1.5,\n \"outputPricePerMillion\": 2.25\n }\n }\n }\n ]\n },\n \"anthropic/claude-3.5-sonnet:beta\": {\n \"modelName\": \"anthropic/claude-3.5-sonnet:beta\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 3,\n \"outputPricePerMillion\": 15\n }\n }\n }\n ]\n },\n \"anthropic/claude-3.5-sonnet\": {\n \"modelName\": \"anthropic/claude-3.5-sonnet\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 3,\n \"outputPricePerMillion\": 15\n }\n }\n }\n ]\n },\n \"x-ai/grok-beta\": {\n \"modelName\": \"x-ai/grok-beta\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 5,\n \"outputPricePerMillion\": 15\n }\n }\n }\n ]\n },\n \"mistralai/ministral-8b\": {\n \"modelName\": \"mistralai/ministral-8b\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.09999999999999999,\n \"outputPricePerMillion\": 0.09999999999999999\n }\n }\n }\n ]\n },\n \"mistralai/ministral-3b\": {\n \"modelName\": \"mistralai/ministral-3b\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.04,\n \"outputPricePerMillion\": 0.04\n }\n }\n }\n ]\n },\n \"qwen/qwen-2.5-7b-instruct:free\": {\n \"modelName\": \"qwen/qwen-2.5-7b-instruct:free\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0,\n \"outputPricePerMillion\": 0\n }\n }\n }\n ]\n },\n \"qwen/qwen-2.5-7b-instruct\": {\n \"modelName\": \"qwen/qwen-2.5-7b-instruct\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.049999999999999996,\n \"outputPricePerMillion\": 0.09999999999999999\n }\n }\n }\n ]\n },\n \"nvidia/llama-3.1-nemotron-70b-instruct:free\": {\n \"modelName\": \"nvidia/llama-3.1-nemotron-70b-instruct:free\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0,\n \"outputPricePerMillion\": 0\n }\n }\n }\n ]\n },\n \"nvidia/llama-3.1-nemotron-70b-instruct\": {\n \"modelName\": \"nvidia/llama-3.1-nemotron-70b-instruct\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.12,\n \"outputPricePerMillion\": 0.3\n }\n }\n }\n ]\n },\n \"inflection/inflection-3-productivity\": {\n \"modelName\": \"inflection/inflection-3-productivity\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 2.5,\n \"outputPricePerMillion\": 10\n }\n }\n }\n ]\n },\n \"inflection/inflection-3-pi\": {\n \"modelName\": \"inflection/inflection-3-pi\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 2.5,\n \"outputPricePerMillion\": 10\n }\n }\n }\n ]\n },\n \"google/gemini-flash-1.5-8b\": {\n \"modelName\": \"google/gemini-flash-1.5-8b\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.0375,\n \"outputPricePerMillion\": 0.15\n }\n }\n }\n ]\n },\n \"thedrummer/rocinante-12b\": {\n \"modelName\": \"thedrummer/rocinante-12b\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.25,\n \"outputPricePerMillion\": 0.5\n }\n }\n }\n ]\n },\n \"anthracite-org/magnum-v2-72b\": {\n \"modelName\": \"anthracite-org/magnum-v2-72b\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 3,\n \"outputPricePerMillion\": 3\n }\n }\n }\n ]\n },\n \"liquid/lfm-40b\": {\n \"modelName\": \"liquid/lfm-40b\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.15,\n \"outputPricePerMillion\": 0.15\n }\n }\n }\n ]\n },\n \"meta-llama/llama-3.2-3b-instruct:free\": {\n \"modelName\": \"meta-llama/llama-3.2-3b-instruct:free\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0,\n \"outputPricePerMillion\": 0\n }\n }\n }\n ]\n },\n \"meta-llama/llama-3.2-3b-instruct\": {\n \"modelName\": \"meta-llama/llama-3.2-3b-instruct\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.015,\n \"outputPricePerMillion\": 0.024999999999999998\n }\n }\n }\n ]\n },\n \"meta-llama/llama-3.2-1b-instruct:free\": {\n \"modelName\": \"meta-llama/llama-3.2-1b-instruct:free\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0,\n \"outputPricePerMillion\": 0\n }\n }\n }\n ]\n },\n \"meta-llama/llama-3.2-1b-instruct\": {\n \"modelName\": \"meta-llama/llama-3.2-1b-instruct\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.01,\n \"outputPricePerMillion\": 0.01\n }\n }\n }\n ]\n },\n \"meta-llama/llama-3.2-90b-vision-instruct\": {\n \"modelName\": \"meta-llama/llama-3.2-90b-vision-instruct\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.8999999999999999,\n \"outputPricePerMillion\": 0.8999999999999999\n }\n }\n }\n ]\n },\n \"meta-llama/llama-3.2-11b-vision-instruct:free\": {\n \"modelName\": \"meta-llama/llama-3.2-11b-vision-instruct:free\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0,\n \"outputPricePerMillion\": 0\n }\n }\n }\n ]\n },\n \"meta-llama/llama-3.2-11b-vision-instruct\": {\n \"modelName\": \"meta-llama/llama-3.2-11b-vision-instruct\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.049,\n \"outputPricePerMillion\": 0.049\n }\n }\n }\n ]\n },\n \"qwen/qwen-2.5-72b-instruct:free\": {\n \"modelName\": \"qwen/qwen-2.5-72b-instruct:free\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0,\n \"outputPricePerMillion\": 0\n }\n }\n }\n ]\n },\n \"qwen/qwen-2.5-72b-instruct\": {\n \"modelName\": \"qwen/qwen-2.5-72b-instruct\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.12,\n \"outputPricePerMillion\": 0.39\n }\n }\n }\n ]\n },\n \"qwen/qwen-2.5-vl-72b-instruct\": {\n \"modelName\": \"qwen/qwen-2.5-vl-72b-instruct\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.6,\n \"outputPricePerMillion\": 0.6\n }\n }\n }\n ]\n },\n \"neversleep/llama-3.1-lumimaid-8b\": {\n \"modelName\": \"neversleep/llama-3.1-lumimaid-8b\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.09375,\n \"outputPricePerMillion\": 0.75\n }\n }\n }\n ]\n },\n \"openai/o1-preview\": {\n \"modelName\": \"openai/o1-preview\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 15,\n \"outputPricePerMillion\": 60\n }\n }\n }\n ]\n },\n \"openai/o1-preview-2024-09-12\": {\n \"modelName\": \"openai/o1-preview-2024-09-12\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 15,\n \"outputPricePerMillion\": 60\n }\n }\n }\n ]\n },\n \"openai/o1-mini\": {\n \"modelName\": \"openai/o1-mini\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 1.1,\n \"outputPricePerMillion\": 4.4\n }\n }\n }\n ]\n },\n \"openai/o1-mini-2024-09-12\": {\n \"modelName\": \"openai/o1-mini-2024-09-12\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 1.1,\n \"outputPricePerMillion\": 4.4\n }\n }\n }\n ]\n },\n \"mistralai/pixtral-12b\": {\n \"modelName\": \"mistralai/pixtral-12b\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.09999999999999999,\n \"outputPricePerMillion\": 0.09999999999999999\n }\n }\n }\n ]\n },\n \"cohere/command-r-plus-08-2024\": {\n \"modelName\": \"cohere/command-r-plus-08-2024\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 2.5,\n \"outputPricePerMillion\": 10\n }\n }\n }\n ]\n },\n \"cohere/command-r-08-2024\": {\n \"modelName\": \"cohere/command-r-08-2024\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.15,\n \"outputPricePerMillion\": 0.6\n }\n }\n }\n ]\n },\n \"qwen/qwen-2.5-vl-7b-instruct:free\": {\n \"modelName\": \"qwen/qwen-2.5-vl-7b-instruct:free\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0,\n \"outputPricePerMillion\": 0\n }\n }\n }\n ]\n },\n \"qwen/qwen-2.5-vl-7b-instruct\": {\n \"modelName\": \"qwen/qwen-2.5-vl-7b-instruct\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.19999999999999998,\n \"outputPricePerMillion\": 0.19999999999999998\n }\n }\n }\n ]\n },\n \"sao10k/l3.1-euryale-70b\": {\n \"modelName\": \"sao10k/l3.1-euryale-70b\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.7,\n \"outputPricePerMillion\": 0.7999999999999999\n }\n }\n }\n ]\n },\n \"google/gemini-flash-1.5-8b-exp\": {\n \"modelName\": \"google/gemini-flash-1.5-8b-exp\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0,\n \"outputPricePerMillion\": 0\n }\n }\n }\n ]\n },\n \"ai21/jamba-1-5-mini\": {\n \"modelName\": \"ai21/jamba-1-5-mini\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.19999999999999998,\n \"outputPricePerMillion\": 0.39999999999999997\n }\n }\n }\n ]\n },\n \"ai21/jamba-1-5-large\": {\n \"modelName\": \"ai21/jamba-1-5-large\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 2,\n \"outputPricePerMillion\": 8\n }\n }\n }\n ]\n },\n \"microsoft/phi-3.5-mini-128k-instruct\": {\n \"modelName\": \"microsoft/phi-3.5-mini-128k-instruct\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.09999999999999999,\n \"outputPricePerMillion\": 0.09999999999999999\n }\n }\n }\n ]\n },\n \"nousresearch/hermes-3-llama-3.1-70b\": {\n \"modelName\": \"nousresearch/hermes-3-llama-3.1-70b\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.12,\n \"outputPricePerMillion\": 0.3\n }\n }\n }\n ]\n },\n \"nousresearch/hermes-3-llama-3.1-405b\": {\n \"modelName\": \"nousresearch/hermes-3-llama-3.1-405b\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.7999999999999999,\n \"outputPricePerMillion\": 0.7999999999999999\n }\n }\n }\n ]\n },\n \"openai/chatgpt-4o-latest\": {\n \"modelName\": \"openai/chatgpt-4o-latest\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 5,\n \"outputPricePerMillion\": 15\n }\n }\n }\n ]\n },\n \"sao10k/l3-lunaris-8b\": {\n \"modelName\": \"sao10k/l3-lunaris-8b\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.02,\n \"outputPricePerMillion\": 0.049999999999999996\n }\n }\n }\n ]\n },\n \"aetherwiing/mn-starcannon-12b\": {\n \"modelName\": \"aetherwiing/mn-starcannon-12b\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.7999999999999999,\n \"outputPricePerMillion\": 1.2\n }\n }\n }\n ]\n },\n \"openai/gpt-4o-2024-08-06\": {\n \"modelName\": \"openai/gpt-4o-2024-08-06\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 2.5,\n \"outputPricePerMillion\": 10\n }\n }\n }\n ]\n },\n \"meta-llama/llama-3.1-405b:free\": {\n \"modelName\": \"meta-llama/llama-3.1-405b:free\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0,\n \"outputPricePerMillion\": 0\n }\n }\n }\n ]\n },\n \"meta-llama/llama-3.1-405b\": {\n \"modelName\": \"meta-llama/llama-3.1-405b\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 2,\n \"outputPricePerMillion\": 2\n }\n }\n }\n ]\n },\n \"nothingiisreal/mn-celeste-12b\": {\n \"modelName\": \"nothingiisreal/mn-celeste-12b\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.7999999999999999,\n \"outputPricePerMillion\": 1.2\n }\n }\n }\n ]\n },\n \"perplexity/llama-3.1-sonar-small-128k-online\": {\n \"modelName\": \"perplexity/llama-3.1-sonar-small-128k-online\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.19999999999999998,\n \"outputPricePerMillion\": 0.19999999999999998\n }\n }\n }\n ]\n },\n \"perplexity/llama-3.1-sonar-large-128k-online\": {\n \"modelName\": \"perplexity/llama-3.1-sonar-large-128k-online\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 1,\n \"outputPricePerMillion\": 1\n }\n }\n }\n ]\n },\n \"meta-llama/llama-3.1-8b-instruct:free\": {\n \"modelName\": \"meta-llama/llama-3.1-8b-instruct:free\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0,\n \"outputPricePerMillion\": 0\n }\n }\n }\n ]\n },\n \"meta-llama/llama-3.1-8b-instruct\": {\n \"modelName\": \"meta-llama/llama-3.1-8b-instruct\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.02,\n \"outputPricePerMillion\": 0.03\n }\n }\n }\n ]\n },\n \"meta-llama/llama-3.1-405b-instruct\": {\n \"modelName\": \"meta-llama/llama-3.1-405b-instruct\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.7999999999999999,\n \"outputPricePerMillion\": 0.7999999999999999\n }\n }\n }\n ]\n },\n \"meta-llama/llama-3.1-70b-instruct\": {\n \"modelName\": \"meta-llama/llama-3.1-70b-instruct\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.09999999999999999,\n \"outputPricePerMillion\": 0.28\n }\n }\n }\n ]\n },\n \"mistralai/codestral-mamba\": {\n \"modelName\": \"mistralai/codestral-mamba\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.25,\n \"outputPricePerMillion\": 0.25\n }\n }\n }\n ]\n },\n \"mistralai/mistral-nemo:free\": {\n \"modelName\": \"mistralai/mistral-nemo:free\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0,\n \"outputPricePerMillion\": 0\n }\n }\n }\n ]\n },\n \"mistralai/mistral-nemo\": {\n \"modelName\": \"mistralai/mistral-nemo\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.03,\n \"outputPricePerMillion\": 0.07\n }\n }\n }\n ]\n },\n \"openai/gpt-4o-mini\": {\n \"modelName\": \"openai/gpt-4o-mini\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.15,\n \"outputPricePerMillion\": 0.6\n }\n }\n }\n ]\n },\n \"openai/gpt-4o-mini-2024-07-18\": {\n \"modelName\": \"openai/gpt-4o-mini-2024-07-18\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.15,\n \"outputPricePerMillion\": 0.6\n }\n }\n }\n ]\n },\n \"google/gemma-2-27b-it\": {\n \"modelName\": \"google/gemma-2-27b-it\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.7999999999999999,\n \"outputPricePerMillion\": 0.7999999999999999\n }\n }\n }\n ]\n },\n \"alpindale/magnum-72b\": {\n \"modelName\": \"alpindale/magnum-72b\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 4,\n \"outputPricePerMillion\": 6\n }\n }\n }\n ]\n },\n \"google/gemma-2-9b-it:free\": {\n \"modelName\": \"google/gemma-2-9b-it:free\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0,\n \"outputPricePerMillion\": 0\n }\n }\n }\n ]\n },\n \"google/gemma-2-9b-it\": {\n \"modelName\": \"google/gemma-2-9b-it\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.07,\n \"outputPricePerMillion\": 0.07\n }\n }\n }\n ]\n },\n \"01-ai/yi-large\": {\n \"modelName\": \"01-ai/yi-large\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 3,\n \"outputPricePerMillion\": 3\n }\n }\n }\n ]\n },\n \"ai21/jamba-instruct\": {\n \"modelName\": \"ai21/jamba-instruct\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.5,\n \"outputPricePerMillion\": 0.7\n }\n }\n }\n ]\n },\n \"anthropic/claude-3.5-sonnet-20240620:beta\": {\n \"modelName\": \"anthropic/claude-3.5-sonnet-20240620:beta\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 3,\n \"outputPricePerMillion\": 15\n }\n }\n }\n ]\n },\n \"anthropic/claude-3.5-sonnet-20240620\": {\n \"modelName\": \"anthropic/claude-3.5-sonnet-20240620\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 3,\n \"outputPricePerMillion\": 15\n }\n }\n }\n ]\n },\n \"sao10k/l3-euryale-70b\": {\n \"modelName\": \"sao10k/l3-euryale-70b\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 1.48,\n \"outputPricePerMillion\": 1.48\n }\n }\n }\n ]\n },\n \"cognitivecomputations/dolphin-mixtral-8x22b\": {\n \"modelName\": \"cognitivecomputations/dolphin-mixtral-8x22b\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.8999999999999999,\n \"outputPricePerMillion\": 0.8999999999999999\n }\n }\n }\n ]\n },\n \"qwen/qwen-2-72b-instruct\": {\n \"modelName\": \"qwen/qwen-2-72b-instruct\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.8999999999999999,\n \"outputPricePerMillion\": 0.8999999999999999\n }\n }\n }\n ]\n },\n \"mistralai/mistral-7b-instruct:free\": {\n \"modelName\": \"mistralai/mistral-7b-instruct:free\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0,\n \"outputPricePerMillion\": 0\n }\n }\n }\n ]\n },\n \"mistralai/mistral-7b-instruct\": {\n \"modelName\": \"mistralai/mistral-7b-instruct\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.029,\n \"outputPricePerMillion\": 0.055\n }\n }\n }\n ]\n },\n \"mistralai/mistral-7b-instruct-v0.3\": {\n \"modelName\": \"mistralai/mistral-7b-instruct-v0.3\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.029,\n \"outputPricePerMillion\": 0.055\n }\n }\n }\n ]\n },\n \"nousresearch/hermes-2-pro-llama-3-8b\": {\n \"modelName\": \"nousresearch/hermes-2-pro-llama-3-8b\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.024999999999999998,\n \"outputPricePerMillion\": 0.04\n }\n }\n }\n ]\n },\n \"microsoft/phi-3-mini-128k-instruct\": {\n \"modelName\": \"microsoft/phi-3-mini-128k-instruct\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.09999999999999999,\n \"outputPricePerMillion\": 0.09999999999999999\n }\n }\n }\n ]\n },\n \"microsoft/phi-3-medium-128k-instruct\": {\n \"modelName\": \"microsoft/phi-3-medium-128k-instruct\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 1,\n \"outputPricePerMillion\": 1\n }\n }\n }\n ]\n },\n \"neversleep/llama-3-lumimaid-70b\": {\n \"modelName\": \"neversleep/llama-3-lumimaid-70b\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 4,\n \"outputPricePerMillion\": 6\n }\n }\n }\n ]\n },\n \"google/gemini-flash-1.5\": {\n \"modelName\": \"google/gemini-flash-1.5\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.075,\n \"outputPricePerMillion\": 0.3\n }\n }\n }\n ]\n },\n \"openai/gpt-4o\": {\n \"modelName\": \"openai/gpt-4o\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 2.5,\n \"outputPricePerMillion\": 10\n }\n }\n }\n ]\n },\n \"openai/gpt-4o:extended\": {\n \"modelName\": \"openai/gpt-4o:extended\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 6,\n \"outputPricePerMillion\": 18\n }\n }\n }\n ]\n },\n \"meta-llama/llama-guard-2-8b\": {\n \"modelName\": \"meta-llama/llama-guard-2-8b\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.19999999999999998,\n \"outputPricePerMillion\": 0.19999999999999998\n }\n }\n }\n ]\n },\n \"openai/gpt-4o-2024-05-13\": {\n \"modelName\": \"openai/gpt-4o-2024-05-13\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 5,\n \"outputPricePerMillion\": 15\n }\n }\n }\n ]\n },\n \"neversleep/llama-3-lumimaid-8b:extended\": {\n \"modelName\": \"neversleep/llama-3-lumimaid-8b:extended\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.09375,\n \"outputPricePerMillion\": 0.75\n }\n }\n }\n ]\n },\n \"neversleep/llama-3-lumimaid-8b\": {\n \"modelName\": \"neversleep/llama-3-lumimaid-8b\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.09375,\n \"outputPricePerMillion\": 0.75\n }\n }\n }\n ]\n },\n \"sao10k/fimbulvetr-11b-v2\": {\n \"modelName\": \"sao10k/fimbulvetr-11b-v2\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.7999999999999999,\n \"outputPricePerMillion\": 1.2\n }\n }\n }\n ]\n },\n \"meta-llama/llama-3-8b-instruct\": {\n \"modelName\": \"meta-llama/llama-3-8b-instruct\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.03,\n \"outputPricePerMillion\": 0.06\n }\n }\n }\n ]\n },\n \"meta-llama/llama-3-70b-instruct\": {\n \"modelName\": \"meta-llama/llama-3-70b-instruct\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.3,\n \"outputPricePerMillion\": 0.39999999999999997\n }\n }\n }\n ]\n },\n \"mistralai/mixtral-8x22b-instruct\": {\n \"modelName\": \"mistralai/mixtral-8x22b-instruct\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.8999999999999999,\n \"outputPricePerMillion\": 0.8999999999999999\n }\n }\n }\n ]\n },\n \"microsoft/wizardlm-2-8x22b\": {\n \"modelName\": \"microsoft/wizardlm-2-8x22b\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.5,\n \"outputPricePerMillion\": 0.5\n }\n }\n }\n ]\n },\n \"microsoft/wizardlm-2-7b\": {\n \"modelName\": \"microsoft/wizardlm-2-7b\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.07,\n \"outputPricePerMillion\": 0.07\n }\n }\n }\n ]\n },\n \"google/gemini-pro-1.5\": {\n \"modelName\": \"google/gemini-pro-1.5\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 1.25,\n \"outputPricePerMillion\": 5\n }\n }\n }\n ]\n },\n \"openai/gpt-4-turbo\": {\n \"modelName\": \"openai/gpt-4-turbo\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 10,\n \"outputPricePerMillion\": 30\n }\n }\n }\n ]\n },\n \"cohere/command-r-plus\": {\n \"modelName\": \"cohere/command-r-plus\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 3,\n \"outputPricePerMillion\": 15\n }\n }\n }\n ]\n },\n \"cohere/command-r-plus-04-2024\": {\n \"modelName\": \"cohere/command-r-plus-04-2024\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 3,\n \"outputPricePerMillion\": 15\n }\n }\n }\n ]\n },\n \"sophosympatheia/midnight-rose-70b\": {\n \"modelName\": \"sophosympatheia/midnight-rose-70b\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.7999999999999999,\n \"outputPricePerMillion\": 0.7999999999999999\n }\n }\n }\n ]\n },\n \"cohere/command\": {\n \"modelName\": \"cohere/command\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 1,\n \"outputPricePerMillion\": 2\n }\n }\n }\n ]\n },\n \"cohere/command-r\": {\n \"modelName\": \"cohere/command-r\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.5,\n \"outputPricePerMillion\": 1.5\n }\n }\n }\n ]\n },\n \"anthropic/claude-3-haiku:beta\": {\n \"modelName\": \"anthropic/claude-3-haiku:beta\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.25,\n \"outputPricePerMillion\": 1.25\n }\n }\n }\n ]\n },\n \"anthropic/claude-3-haiku\": {\n \"modelName\": \"anthropic/claude-3-haiku\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.25,\n \"outputPricePerMillion\": 1.25\n }\n }\n }\n ]\n },\n \"anthropic/claude-3-opus:beta\": {\n \"modelName\": \"anthropic/claude-3-opus:beta\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 15,\n \"outputPricePerMillion\": 75\n }\n }\n }\n ]\n },\n \"anthropic/claude-3-opus\": {\n \"modelName\": \"anthropic/claude-3-opus\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 15,\n \"outputPricePerMillion\": 75\n }\n }\n }\n ]\n },\n \"anthropic/claude-3-sonnet:beta\": {\n \"modelName\": \"anthropic/claude-3-sonnet:beta\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 3,\n \"outputPricePerMillion\": 15\n }\n }\n }\n ]\n },\n \"anthropic/claude-3-sonnet\": {\n \"modelName\": \"anthropic/claude-3-sonnet\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 3,\n \"outputPricePerMillion\": 15\n }\n }\n }\n ]\n },\n \"cohere/command-r-03-2024\": {\n \"modelName\": \"cohere/command-r-03-2024\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.5,\n \"outputPricePerMillion\": 1.5\n }\n }\n }\n ]\n },\n \"mistralai/mistral-large\": {\n \"modelName\": \"mistralai/mistral-large\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 2,\n \"outputPricePerMillion\": 6\n }\n }\n }\n ]\n },\n \"openai/gpt-3.5-turbo-0613\": {\n \"modelName\": \"openai/gpt-3.5-turbo-0613\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 1,\n \"outputPricePerMillion\": 2\n }\n }\n }\n ]\n },\n \"openai/gpt-4-turbo-preview\": {\n \"modelName\": \"openai/gpt-4-turbo-preview\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 10,\n \"outputPricePerMillion\": 30\n }\n }\n }\n ]\n },\n \"nousresearch/nous-hermes-2-mixtral-8x7b-dpo\": {\n \"modelName\": \"nousresearch/nous-hermes-2-mixtral-8x7b-dpo\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.6,\n \"outputPricePerMillion\": 0.6\n }\n }\n }\n ]\n },\n \"mistralai/mistral-medium\": {\n \"modelName\": \"mistralai/mistral-medium\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 2.75,\n \"outputPricePerMillion\": 8.1\n }\n }\n }\n ]\n },\n \"mistralai/mistral-small\": {\n \"modelName\": \"mistralai/mistral-small\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.19999999999999998,\n \"outputPricePerMillion\": 0.6\n }\n }\n }\n ]\n },\n \"mistralai/mistral-tiny\": {\n \"modelName\": \"mistralai/mistral-tiny\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.25,\n \"outputPricePerMillion\": 0.25\n }\n }\n }\n ]\n },\n \"mistralai/mistral-7b-instruct-v0.2\": {\n \"modelName\": \"mistralai/mistral-7b-instruct-v0.2\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.19999999999999998,\n \"outputPricePerMillion\": 0.19999999999999998\n }\n }\n }\n ]\n },\n \"cognitivecomputations/dolphin-mixtral-8x7b\": {\n \"modelName\": \"cognitivecomputations/dolphin-mixtral-8x7b\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.5,\n \"outputPricePerMillion\": 0.5\n }\n }\n }\n ]\n },\n \"google/gemini-pro-vision\": {\n \"modelName\": \"google/gemini-pro-vision\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.5,\n \"outputPricePerMillion\": 1.5\n }\n }\n }\n ]\n },\n \"mistralai/mixtral-8x7b-instruct\": {\n \"modelName\": \"mistralai/mixtral-8x7b-instruct\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.24,\n \"outputPricePerMillion\": 0.24\n }\n }\n }\n ]\n },\n \"openchat/openchat-7b\": {\n \"modelName\": \"openchat/openchat-7b\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.07,\n \"outputPricePerMillion\": 0.07\n }\n }\n }\n ]\n },\n \"neversleep/noromaid-20b\": {\n \"modelName\": \"neversleep/noromaid-20b\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.75,\n \"outputPricePerMillion\": 1.5\n }\n }\n }\n ]\n },\n \"anthropic/claude-2.1:beta\": {\n \"modelName\": \"anthropic/claude-2.1:beta\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 8,\n \"outputPricePerMillion\": 24\n }\n }\n }\n ]\n },\n \"anthropic/claude-2.1\": {\n \"modelName\": \"anthropic/claude-2.1\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 8,\n \"outputPricePerMillion\": 24\n }\n }\n }\n ]\n },\n \"anthropic/claude-2:beta\": {\n \"modelName\": \"anthropic/claude-2:beta\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 8,\n \"outputPricePerMillion\": 24\n }\n }\n }\n ]\n },\n \"anthropic/claude-2\": {\n \"modelName\": \"anthropic/claude-2\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 8,\n \"outputPricePerMillion\": 24\n }\n }\n }\n ]\n },\n \"undi95/toppy-m-7b\": {\n \"modelName\": \"undi95/toppy-m-7b\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.07,\n \"outputPricePerMillion\": 0.07\n }\n }\n }\n ]\n },\n \"alpindale/goliath-120b\": {\n \"modelName\": \"alpindale/goliath-120b\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 6.5625,\n \"outputPricePerMillion\": 9.375\n }\n }\n }\n ]\n },\n \"openrouter/auto\": {\n \"modelName\": \"openrouter/auto\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": -1000000,\n \"outputPricePerMillion\": -1000000\n }\n }\n }\n ]\n },\n \"openai/gpt-3.5-turbo-1106\": {\n \"modelName\": \"openai/gpt-3.5-turbo-1106\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 1,\n \"outputPricePerMillion\": 2\n }\n }\n }\n ]\n },\n \"openai/gpt-4-1106-preview\": {\n \"modelName\": \"openai/gpt-4-1106-preview\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 10,\n \"outputPricePerMillion\": 30\n }\n }\n }\n ]\n },\n \"google/palm-2-chat-bison-32k\": {\n \"modelName\": \"google/palm-2-chat-bison-32k\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 1,\n \"outputPricePerMillion\": 2\n }\n }\n }\n ]\n },\n \"google/palm-2-codechat-bison-32k\": {\n \"modelName\": \"google/palm-2-codechat-bison-32k\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 1,\n \"outputPricePerMillion\": 2\n }\n }\n }\n ]\n },\n \"jondurbin/airoboros-l2-70b\": {\n \"modelName\": \"jondurbin/airoboros-l2-70b\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.5,\n \"outputPricePerMillion\": 0.5\n }\n }\n }\n ]\n },\n \"openai/gpt-3.5-turbo-instruct\": {\n \"modelName\": \"openai/gpt-3.5-turbo-instruct\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 1.5,\n \"outputPricePerMillion\": 2\n }\n }\n }\n ]\n },\n \"mistralai/mistral-7b-instruct-v0.1\": {\n \"modelName\": \"mistralai/mistral-7b-instruct-v0.1\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.19999999999999998,\n \"outputPricePerMillion\": 0.19999999999999998\n }\n }\n }\n ]\n },\n \"pygmalionai/mythalion-13b\": {\n \"modelName\": \"pygmalionai/mythalion-13b\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.5625,\n \"outputPricePerMillion\": 1.125\n }\n }\n }\n ]\n },\n \"openai/gpt-3.5-turbo-16k\": {\n \"modelName\": \"openai/gpt-3.5-turbo-16k\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 3,\n \"outputPricePerMillion\": 4\n }\n }\n }\n ]\n },\n \"openai/gpt-4-32k\": {\n \"modelName\": \"openai/gpt-4-32k\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 60,\n \"outputPricePerMillion\": 120\n }\n }\n }\n ]\n },\n \"openai/gpt-4-32k-0314\": {\n \"modelName\": \"openai/gpt-4-32k-0314\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 60,\n \"outputPricePerMillion\": 120\n }\n }\n }\n ]\n },\n \"nousresearch/nous-hermes-llama2-13b\": {\n \"modelName\": \"nousresearch/nous-hermes-llama2-13b\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.18,\n \"outputPricePerMillion\": 0.18\n }\n }\n }\n ]\n },\n \"mancer/weaver\": {\n \"modelName\": \"mancer/weaver\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 1.125,\n \"outputPricePerMillion\": 1.125\n }\n }\n }\n ]\n },\n \"huggingfaceh4/zephyr-7b-beta:free\": {\n \"modelName\": \"huggingfaceh4/zephyr-7b-beta:free\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0,\n \"outputPricePerMillion\": 0\n }\n }\n }\n ]\n },\n \"anthropic/claude-2.0:beta\": {\n \"modelName\": \"anthropic/claude-2.0:beta\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 8,\n \"outputPricePerMillion\": 24\n }\n }\n }\n ]\n },\n \"anthropic/claude-2.0\": {\n \"modelName\": \"anthropic/claude-2.0\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 8,\n \"outputPricePerMillion\": 24\n }\n }\n }\n ]\n },\n \"undi95/remm-slerp-l2-13b\": {\n \"modelName\": \"undi95/remm-slerp-l2-13b\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.5625,\n \"outputPricePerMillion\": 1.125\n }\n }\n }\n ]\n },\n \"google/palm-2-chat-bison\": {\n \"modelName\": \"google/palm-2-chat-bison\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 1,\n \"outputPricePerMillion\": 2\n }\n }\n }\n ]\n },\n \"google/palm-2-codechat-bison\": {\n \"modelName\": \"google/palm-2-codechat-bison\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 1,\n \"outputPricePerMillion\": 2\n }\n }\n }\n ]\n },\n \"gryphe/mythomax-l2-13b\": {\n \"modelName\": \"gryphe/mythomax-l2-13b\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.065,\n \"outputPricePerMillion\": 0.065\n }\n }\n }\n ]\n },\n \"meta-llama/llama-2-13b-chat\": {\n \"modelName\": \"meta-llama/llama-2-13b-chat\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.22,\n \"outputPricePerMillion\": 0.22\n }\n }\n }\n ]\n },\n \"meta-llama/llama-2-70b-chat\": {\n \"modelName\": \"meta-llama/llama-2-70b-chat\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.8999999999999999,\n \"outputPricePerMillion\": 0.8999999999999999\n }\n }\n }\n ]\n },\n \"openai/gpt-3.5-turbo\": {\n \"modelName\": \"openai/gpt-3.5-turbo\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.5,\n \"outputPricePerMillion\": 1.5\n }\n }\n }\n ]\n },\n \"openai/gpt-3.5-turbo-0125\": {\n \"modelName\": \"openai/gpt-3.5-turbo-0125\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.5,\n \"outputPricePerMillion\": 1.5\n }\n }\n }\n ]\n },\n \"openai/gpt-4\": {\n \"modelName\": \"openai/gpt-4\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 30,\n \"outputPricePerMillion\": 60\n }\n }\n }\n ]\n },\n \"openai/gpt-4-0314\": {\n \"modelName\": \"openai/gpt-4-0314\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 30,\n \"outputPricePerMillion\": 60\n }\n }\n }\n ]\n }\n}\n","import { z } from \"zod\";\n\nimport { AssistantRoleLiteral, SystemRoleLiteral, ToolRoleLiteral, UserRoleLiteral } from \"@adaline/types\";\n\nconst OpenRouterChatModelRoles = z.enum([SystemRoleLiteral, UserRoleLiteral, AssistantRoleLiteral, ToolRoleLiteral]);\n\nconst OpenRouterChatModelRolesMap = {\n system: SystemRoleLiteral,\n user: UserRoleLiteral,\n assistant: AssistantRoleLiteral,\n tool: ToolRoleLiteral,\n} as const;\n\nexport { OpenRouterChatModelRoles, OpenRouterChatModelRolesMap };\n","import { z } from \"zod\";\n\nimport { ChatModelSchemaType } from \"@adaline/provider\";\nimport { ImageModalityLiteral, TextModalityLiteral, ToolCallModalityLiteral, ToolResponseModalityLiteral } from \"@adaline/types\";\n\nconst OpenRouterChatModelModalities: ChatModelSchemaType[\"modalities\"] = [\n TextModalityLiteral,\n ImageModalityLiteral,\n ToolCallModalityLiteral,\n ToolResponseModalityLiteral,\n];\n\nconst OpenRouterChatModelModalitiesEnum = z.enum([\n TextModalityLiteral,\n ImageModalityLiteral,\n ToolCallModalityLiteral,\n ToolResponseModalityLiteral,\n]);\n\nexport { OpenRouterChatModelModalitiesEnum, OpenRouterChatModelModalities };\n","import { z } from \"zod\";\n\nconst OpenRouterBaseLogProb = z.object({\n token: z.string(),\n logprob: z.number(),\n bytes: z.array(z.number()).nullable(),\n});\n\nconst OpenRouterLogProb = z\n .object({\n content: z\n .array(\n OpenRouterBaseLogProb.extend({\n top_logprobs: z.array(OpenRouterBaseLogProb),\n })\n )\n .nullable(),\n refusal: z\n .array(\n OpenRouterBaseLogProb.extend({\n top_logprobs: z.array(OpenRouterBaseLogProb),\n })\n )\n .nullable(),\n })\n .nullable();\n\nconst OpenRouterToolCallsCompleteChatResponse = z.array(\n z.object({\n id: z.string().min(1),\n type: z.enum([\"function\"]),\n function: z.object({\n name: z.string(),\n arguments: z.string(),\n }),\n })\n);\n\nconst OpenRouterCompleteChatResponse = z.object({\n id: z.string(),\n object: z.string(),\n created: z.number(),\n model: z.string(),\n system_fingerprint: z.string().nullable().optional(),\n choices: z.array(\n z.object({\n index: z.number(),\n message: z.object({\n role: z.string(),\n content: z.string().nullable().optional(),\n tool_calls: OpenRouterToolCallsCompleteChatResponse.optional(),\n refusal: z.string().nullable().optional(),\n }),\n logprobs: OpenRouterLogProb.optional(),\n finish_reason: z.string().nullable().optional(),\n })\n ),\n usage: z\n .object({\n prompt_tokens: z.number(),\n completion_tokens: z.number(),\n total_tokens: z.number(),\n })\n .nullable()\n .optional(),\n});\ntype OpenRouterCompleteChatResponseType = z.infer<typeof OpenRouterCompleteChatResponse>;\n\nconst OpenRouterToolCallsStreamChatResponse = z.array(\n z.object({\n index: z.number().int(),\n id: z.string().min(1).optional(),\n type: z.enum([\"function\"]).optional(),\n function: z\n .object({\n name: z.string().min(1).optional(),\n arguments: z.string().optional(),\n })\n .optional(),\n })\n);\n\nconst OpenRouterStreamChatResponse = z.object({\n id: z.string(),\n object: z.string(),\n created: z.number(),\n model: z.string(),\n system_fingerprint: z.string().nullable().optional(),\n choices: z.array(\n z.object({\n index: z.number(),\n delta: z\n .object({\n content: z.string().nullable().optional(),\n tool_calls: OpenRouterToolCallsStreamChatResponse.optional(),\n refusal: z.string().nullable().optional(),\n })\n .or(z.object({})),\n logprobs: OpenRouterLogProb,\n finish_reason: z.string().nullable().optional(),\n })\n ),\n usage: z\n .object({\n prompt_tokens: z.number(),\n completion_tokens: z.number(),\n total_tokens: z.number(),\n })\n .nullable()\n .optional(),\n});\ntype OpenRouterStreamChatResponseType = z.infer<typeof OpenRouterStreamChatResponse>;\n\nexport {\n OpenRouterStreamChatResponse,\n OpenRouterCompleteChatResponse,\n OpenRouterToolCallsStreamChatResponse,\n OpenRouterToolCallsCompleteChatResponse,\n type OpenRouterStreamChatResponseType,\n type OpenRouterCompleteChatResponseType,\n};\n","import { z } from \"zod\";\n\nconst OpenRouterChatRequestTool = z.object({\n type: z.literal(\"function\"),\n function: z.object({\n name: z.string().min(1),\n description: z.string().min(1).optional(),\n strict: z.boolean().optional(),\n parameters: z.any(),\n }),\n});\ntype OpenRouterChatRequestToolType = z.infer<typeof OpenRouterChatRequestTool>;\n\nconst OpenRouterChatRequestToolChoiceEnum = z.enum([\"none\", \"auto\", \"required\"]);\ntype OpenRouterChatRequestToolChoiceEnumType = z.infer<typeof OpenRouterChatRequestToolChoiceEnum>;\n\nconst OpenRouterChatRequestToolChoiceFunction = z.object({\n type: z.literal(\"function\"),\n function: z.object({\n name: z.string().min(1),\n }),\n});\ntype OpenRouterChatRequestToolChoiceFunctionType = z.infer<typeof OpenRouterChatRequestToolChoiceFunction>;\n\nconst OpenRouterChatRequestResponseFormat = z\n .object({\n type: z.enum([\"text\", \"json_object\"]),\n })\n .or(\n z.object({\n type: z.literal(\"json_schema\"),\n json_schema: z.object({\n name: z.string().min(1),\n description: z.string().min(1).optional(),\n strict: z.boolean().optional(),\n schema: z.any(),\n }),\n })\n );\ntype OpenRouterChatRequestResponseFormatType = z.infer<typeof OpenRouterChatRequestResponseFormat>;\n\nconst OpenRouterChatRequestTextContent = z.object({\n text: z.string().min(1),\n type: z.literal(\"text\"),\n});\ntype OpenRouterChatRequestTextContentType = z.infer<typeof OpenRouterChatRequestTextContent>;\n\nconst OpenRouterChatRequestImageContent = z.object({\n type: z.literal(\"image_url\"),\n image_url: z.object({\n url: z.string().url().min(1),\n detail: z.enum([\"low\", \"high\", \"auto\"]).optional(),\n }),\n});\ntype OpenRouterChatRequestImageContentType = z.infer<typeof OpenRouterChatRequestImageContent>;\n\nconst OpenRouterChatRequestToolCallContent = z.object({\n id: z.string().min(1),\n type: z.literal(\"function\"),\n function: z.object({\n name: z.string().min(1),\n arguments: z.string().min(1),\n }),\n});\ntype OpenRouterChatRequestToolCallContentType = z.infer<typeof OpenRouterChatRequestToolCallContent>;\n\nconst OpenRouterChatRequestSystemMessage = z.object({\n role: z.literal(\"system\"),\n content: z.string().min(1).or(z.array(OpenRouterChatRequestTextContent).min(1)),\n});\ntype OpenRouterChatRequestSystemMessageType = z.infer<typeof OpenRouterChatRequestSystemMessage>;\n\nconst OpenRouterChatRequestUserMessage = z.object({\n role: z.literal(\"user\"),\n content: z\n .string()\n .min(1)\n .or(z.array(z.union([OpenRouterChatRequestTextContent, OpenRouterChatRequestImageContent])).min(1)),\n});\ntype OpenRouterChatRequestUserMessageType = z.infer<typeof OpenRouterChatRequestUserMessage>;\n\nconst OpenRouterChatRequestAssistantMessage = z.object({\n role: z.literal(\"assistant\"),\n content: z.string().min(1).or(z.array(OpenRouterChatRequestTextContent).min(1)).optional(),\n tool_calls: z.array(OpenRouterChatRequestToolCallContent).min(1).optional(),\n});\ntype OpenRouterChatRequestAssistantMessageType = z.infer<typeof OpenRouterChatRequestAssistantMessage>;\n\nconst OpenRouterChatRequestToolMessage = z.object({\n role: z.literal(\"tool\"),\n tool_call_id: z.string().min(1),\n content: z.string().min(1),\n});\ntype OpenRouterChatRequestToolMessageType = z.infer<typeof OpenRouterChatRequestToolMessage>;\n\nconst OpenRouterChatRequestMessage = z.union([\n OpenRouterChatRequestSystemMessage,\n OpenRouterChatRequestUserMessage,\n OpenRouterChatRequestAssistantMessage,\n OpenRouterChatRequestToolMessage,\n]);\ntype OpenRouterChatRequestMessageType = z.infer<typeof OpenRouterChatRequestMessage>;\n\nconst OpenRouterChatRequest = z.object({\n model: z.string().min(1).optional(),\n messages: z.array(OpenRouterChatRequestMessage).min(1),\n frequency_penalty: z.number().min(-2).max(2).nullable().optional(),\n logprobs: z.boolean().nullable().optional(),\n top_logprobs: z.number().min(0).max(20).nullable().optional(),\n max_tokens: z.number().min(0).nullable().optional(),\n presence_penalty: z.number().min(-2).max(2).nullable().optional(),\n repetition_penalty: z.number().min(0).max(2).nullable().optional(),\n response_format: OpenRouterChatRequestResponseFormat.optional(),\n seed: z.number().nullable().optional(),\n stop: z.string().or(z.array(z.string()).max(4)).nullable().optional(),\n top_a: z.number().min(0).max(1).nullable().optional(),\n temperature: z.number().min(0).max(2).nullable().optional(),\n top_p: z.number().min(0).max(1).nullable().optional(),\n top_k: z.number().min(0).max(100).nullable().optional(),\n min_p: z.number().min(0).max(1).nullable().optional(),\n tools: z.array(OpenRouterChatRequestTool).optional(),\n tool_choice: OpenRouterChatRequestToolChoiceEnum.or(OpenRouterChatRequestToolChoiceFunction).optional(),\n});\ntype OpenRouterChatRequestType = z.infer<typeof OpenRouterChatRequest>;\n\nexport {\n OpenRouterChatRequest,\n OpenRouterChatRequestMessage,\n OpenRouterChatRequestSystemMessage,\n OpenRouterChatRequestUserMessage,\n OpenRouterChatRequestAssistantMessage,\n OpenRouterChatRequestToolMessage,\n OpenRouterChatRequestTextContent,\n OpenRouterChatRequestImageContent,\n OpenRouterChatRequestToolCallContent,\n OpenRouterChatRequestTool,\n OpenRouterChatRequestToolChoiceEnum,\n OpenRouterChatRequestToolChoiceFunction,\n OpenRouterChatRequestResponseFormat,\n type OpenRouterChatRequestType,\n type OpenRouterChatRequestMessageType,\n type OpenRouterChatRequestSystemMessageType,\n type OpenRouterChatRequestUserMessageType,\n type OpenRouterChatRequestAssistantMessageType,\n type OpenRouterChatRequestToolMessageType,\n type OpenRouterChatRequestTextContentType,\n type OpenRouterChatRequestImageContentType,\n type OpenRouterChatRequestToolCallContentType,\n type OpenRouterChatRequestToolType,\n type OpenRouterChatRequestToolChoiceEnumType,\n type OpenRouterChatRequestToolChoiceFunctionType,\n type OpenRouterChatRequestResponseFormatType,\n};\n","import { z } from \"zod\";\n\nimport {\n ChatModelSchemaType,\n ChatModelV1,\n getMimeTypeFromBase64,\n HeadersType,\n InvalidConfigError,\n InvalidMessagesError,\n InvalidModelRequestError,\n InvalidToolsError,\n ModelResponseError,\n ParamsType,\n removeUndefinedEntries,\n SelectStringConfigItemDefType,\n UrlType,\n urlWithoutTrailingSlash,\n} from \"@adaline/provider\";\nimport {\n AssistantRoleLiteral,\n Base64ImageContentTypeLiteral,\n Base64ImageContentValueType,\n ChatLogProbsType,\n ChatModelPriceType,\n ChatResponseType,\n ChatUsageType,\n Config,\n ConfigType,\n ContentType,\n createPartialTextMessage,\n createPartialToolCallMessage,\n createTextContent,\n createToolCallContent,\n ImageModalityLiteral,\n Message,\n MessageType,\n PartialChatResponseType,\n SystemRoleLiteral,\n TextModalityLiteral,\n Tool,\n ToolCallContentType,\n ToolCallModalityLiteral,\n ToolResponseContentType,\n ToolResponseModalityLiteral,\n ToolRoleLiteral,\n ToolType,\n UrlImageContentTypeLiteral,\n UserRoleLiteral,\n} from \"@adaline/types\";\n\nimport { OpenRouter } from \"../../provider/provider.open-router\";\nimport pricingData from \"../pricing.json\";\nimport {\n OpenRouterChatRequest,\n OpenRouterChatRequestImageContentType,\n OpenRouterChatRequestTextContentType,\n OpenRouterChatRequestToolType,\n OpenRouterChatRequestType,\n OpenRouterCompleteChatResponse,\n OpenRouterCompleteChatResponseType,\n OpenRouterStreamChatResponse,\n OpenRouterStreamChatResponseType,\n} from \"./types\";\n\nconst BaseChatModelOptions = z.object({\n modelName: z.string(),\n apiKey: z.string(),\n openRouterReferer: z.string().optional(),\n openRouterTitle: z.string().optional(),\n});\ntype BaseChatModelOptionsType = z.infer<typeof BaseChatModelOptions>;\n\nclass BaseChatModel implements ChatModelV1<ChatModelSchemaType> {\n readonly version = \"v1\" as const;\n modelSchema: ChatModelSchemaType;\n\n private readonly modelName: string;\n private readonly apiKey: string;\n private readonly baseUrl: string;\n private readonly streamChatUrl: string;\n private readonly completeChatUrl: string;\n private readonly openRouterReferer: string | undefined;\n private readonly openRouterTitle: string | undefined;\n\n constructor(modelSchema: ChatModelSchemaType, options: BaseChatModelOptionsType) {\n const parsedOptions = BaseChatModelOptions.parse(options);\n this.modelSchema = modelSchema;\n this.modelName = parsedOptions.modelName;\n this.apiKey = parsedOptions.apiKey;\n this.baseUrl = urlWithoutTrailingSlash(OpenRouter.baseUrl);\n this.streamChatUrl = urlWithoutTrailingSlash(`${this.baseUrl}/chat/completions`);\n this.completeChatUrl = urlWithoutTrailingSlash(`${this.baseUrl}/chat/completions`);\n this.openRouterReferer = parsedOptions.openRouterReferer;\n this.openRouterTitle = parsedOptions.openRouterTitle;\n }\n\n getDefaultBaseUrl(): UrlType {\n return this.baseUrl;\n }\n\n getDefaultHeaders(): HeadersType {\n return {\n Authorization: `Bearer ${this.apiKey}`,\n \"Content-Type\": \"application/json\",\n ...(this.openRouterReferer ? { \"HTTP-Referer\": this.openRouterReferer } : {}),\n ...(this.openRouterTitle ? { \"X-Title\": this.openRouterTitle } : {}),\n };\n }\n\n getDefaultParams(): ParamsType {\n return {\n model: this.modelName,\n };\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n getRetryDelay(responseHeaders: HeadersType): { shouldRetry: boolean; delayMs: number } {\n return { shouldRetry: true, delayMs: 0 };\n }\n\n getTokenCount(messages: MessageType[]): number {\n return messages.reduce((acc, message) => {\n return acc + message.content.map((content) => (content.modality === \"text\" ? content.value : \"\")).join(\" \").length;\n }, 0);\n }\n\n transformModelRequest(request: OpenRouterChatRequestType): {\n modelName: string | undefined;\n config: ConfigType;\n messages: MessageType[];\n tools: ToolType[] | undefined;\n } {\n const safeRequest = OpenRouterChatRequest.safeParse(request);\n if (!safeRequest.success) {\n throw new InvalidModelRequestError({ info: \"Invalid model request\", cause: safeRequest.error });\n }\n\n const parsedRequest = safeRequest.data;\n\n const modelName = parsedRequest.model;\n\n if (parsedRequest.tool_choice && (!parsedRequest.tools || parsedRequest.tools.length === 0)) {\n throw new InvalidModelRequestError({\n info: `Invalid model request for model : '${this.modelName}'`,\n cause: new Error(\"'tools' are required when 'tool_choice' is specified\"),\n });\n }\n\n const _config: ConfigType = {};\n if (parsedRequest.response_format) {\n _config.responseFormat = parsedRequest.response_format.type;\n if (parsedRequest.response_format.type === \"json_schema\") {\n _config.responseSchema = {\n name: parsedRequest.response_format.json_schema.name,\n description: parsedRequest.response_format.json_schema.description || \"\",\n strict: parsedRequest.response_format.json_schema.strict,\n schema: parsedRequest.response_format.json_schema.schema,\n };\n }\n }\n\n if (parsedRequest.tool_choice) {\n if (typeof parsedRequest.tool_choice === \"string\") {\n _config.toolChoice = parsedRequest.tool_choice;\n } else {\n _config.toolChoice = parsedRequest.tool_choice.function.name;\n }\n }\n\n _config.seed = parsedRequest.seed;\n _config.maxTokens = parsedRequest.max_tokens;\n _config.temperature = parsedRequest.temperature;\n _config.topA = parsedRequest.top_a;\n _config.topP = parsedRequest.top_p;\n _config.minP = parsedRequest.min_p;\n _config.topK = parsedRequest.top_k;\n _config.repetitionPenalty = parsedRequest.repetition_penalty;\n _config.presencePenalty = parsedRequest.presence_penalty;\n _config.frequencyPenalty = parsedRequest.frequency_penalty;\n _config.stop = parsedRequest.stop;\n _config.logProbs = parsedRequest.logprobs;\n _config.topLogProbs = parsedRequest.top_logprobs;\n\n const config = Config().parse(removeUndefinedEntries(_config));\n\n const messages: MessageType[] = [];\n const toolCallMap: { [id: string]: ToolCallContentType } = {};\n parsedRequest.messages.forEach((message) => {\n const role = message.role;\n switch (role) {\n case \"system\":\n {\n const content = message.content as string | OpenRouterChatRequestTextContentType[];\n if (typeof content === \"string\") {\n messages.push({\n role: role,\n content: [{ modality: TextModalityLiteral, value: content }],\n });\n } else {\n const _content = content.map((c) => {\n return { modality: TextModalityLiteral, value: c.text };\n });\n messages.push({ role: role, content: _content });\n }\n }\n break;\n\n case \"user\":\n {\n const content = message.content as string | (OpenRouterChatRequestTextContentType | OpenRouterChatRequestImageContentType)[];\n if (typeof content === \"string\") {\n messages.push({\n role: role,\n content: [{ modality: TextModalityLiteral, value: content }],\n });\n } else {\n const _content = content.map((c) => {\n if (c.type === \"text\") {\n return { modality: TextModalityLiteral, value: c.text };\n } else {\n if (c.image_url.url.startsWith(\"data:\")) {\n return {\n modality: ImageModalityLiteral,\n detail: c.image_url.detail || \"auto\",\n value: {\n type: Base64ImageContentTypeLiteral,\n base64: c.image_url.url,\n mediaType: getMimeTypeFromBase64(c.image_url.url) as Base64ImageContentValueType[\"mediaType\"],\n },\n };\n } else {\n return {\n modality: ImageModalityLiteral,\n detail: c.image_url.detail || \"auto\",\n value: { type: UrlImageContentTypeLiteral, url: c.image_url.url },\n };\n }\n }\n });\n messages.push({ role: role, content: _content });\n }\n }\n break;\n\n case \"assistant\":\n {\n const assistantContent: ContentType[] = [];\n\n if (!message.content && !message.tool_calls) {\n throw new InvalidModelRequestError({\n info: `Invalid model request for model : '${this.modelName}'`,\n cause: new Error(\"one of'content' or 'tool_calls' must be provided\"),\n });\n }\n\n if (message.content) {\n const content = message.content as string | OpenRouterChatRequestTextContentType[];\n if (typeof content === \"string\") {\n assistantContent.push({ modality: TextModalityLiteral, value: content });\n } else {\n content.forEach((c) => {\n assistantContent.push({ modality: TextModalityLiteral, value: c.text });\n });\n }\n }\n\n if (message.tool_calls) {\n const toolCalls = message.tool_calls;\n toolCalls.forEach((toolCall, index) => {\n const toolCallContent: ToolCallContentType = {\n modality: ToolCallModalityLiteral,\n id: toolCall.id,\n index: index,\n name: toolCall.function.name,\n arguments: toolCall.function.arguments,\n };\n assistantContent.push(toolCallContent);\n toolCallMap[toolCallContent.id] = toolCallContent;\n });\n }\n messages.push({ role: role, content: assistantContent });\n }\n break;\n\n case \"tool\":\n {\n const toolResponse = message;\n messages.push({\n role: role,\n content: [\n {\n modality: ToolResponseModalityLiteral,\n id: toolResponse.tool_call_id,\n index: toolCallMap[toolResponse.tool_call_id].index,\n name: toolCallMap[toolResponse.tool_call_id].name,\n data: toolResponse.content,\n },\n ],\n });\n }\n break;\n }\n });\n\n const tools: ToolType[] = [];\n if (parsedRequest.tools) {\n parsedRequest.tools.forEach((tool: OpenRouterChatRequestToolType) => {\n tools.push({\n type: \"function\",\n definition: {\n schema: {\n name: tool.function.name,\n description: tool.function.description || \"\",\n strict: tool.function.strict,\n parameters: tool.function.parameters,\n },\n },\n });\n });\n }\n\n return {\n modelName,\n config,\n messages,\n tools: tools.length > 0 ? tools : undefined,\n };\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n transformConfig(config: ConfigType, messages?: MessageType[], tools?: ToolType[]): ParamsType {\n const _toolChoice = config.toolChoice;\n delete config.toolChoice; // can have a specific tool name that is not in the model schema, validated at transformation\n\n const _parsedConfig = this.modelSchema.config.schema.safeParse(config);\n if (!_parsedConfig.success) {\n throw new InvalidConfigError({\n info: `Invalid config for model : '${this.modelName}'`,\n cause: _parsedConfig.error,\n });\n }\n\n const parsedConfig = _parsedConfig.data as ConfigType;\n if (_toolChoice !== undefined) {\n parsedConfig.toolChoice = _toolChoice;\n }\n\n Object.keys(parsedConfig).forEach((key) => {\n if (!(key in this.modelSchema.config.def)) {\n throw new InvalidConfigError({\n info: `Invalid config for model : '${this.modelName}'`,\n cause: new Error(`Invalid config key : '${key}', \n available keys : [${Object.keys(this.modelSchema.config.def).join(\", \")}]`),\n });\n }\n });\n\n const transformedConfig = Object.keys(parsedConfig).reduce((acc, key) => {\n const def = this.modelSchema.config.def[key];\n const paramKey = def.param;\n const paramValue = (parsedConfig as ConfigType)[key];\n\n if (paramKey === \"max_tokens\" && def.type === \"range\" && paramValue === 0) {\n acc[paramKey] = def.max;\n } else {\n acc[paramKey] = paramValue;\n }\n\n return acc;\n }, {} as ParamsType);\n\n if (transformedConfig.top_logprobs && !transformedConfig.logprobs) {\n throw new InvalidConfigError({\n info: `Invalid config for model : '${this.modelName}'`,\n cause: new Error(\"'logprobs' must be 'true' when 'top_logprobs' is specified\"),\n });\n }\n\n if (\"tool_choice\" in transformedConfig && transformedConfig.tool_choice !== undefined) {\n const toolChoice = transformedConfig.tool_choice as string;\n if (!tools || (tools && tools.length === 0)) {\n throw new InvalidConfigError({\n info: `Invalid config for model : '${this.modelName}'`,\n cause: new Error(\"'tools' are required when 'toolChoice' is specified\"),\n });\n } else if (tools && tools.length > 0) {\n const configToolChoice = this.modelSchema.config.def.toolChoice as SelectStringConfigItemDefType;\n if (!configToolChoice.choices.includes(toolChoice)) {\n if (tools.map((tool) => tool.definition.schema.name).includes(toolChoice)) {\n transformedConfig.tool_choice = { type: \"function\", function: { name: toolChoice } };\n } else {\n throw new InvalidConfigError({\n info: `Invalid config for model : '${this.modelName}'`,\n cause: new Error(`toolChoice : '${toolChoice}' is not part of provided 'tools' names or \n one of [${configToolChoice.choices.join(\", \")}]`),\n });\n }\n }\n }\n }\n\n if (\"response_format\" in transformedConfig && transformedConfig.response_format !== undefined) {\n const responseFormat = transformedConfig.response_format as string;\n if (responseFormat === \"json_schema\") {\n if (!(\"response_schema\" in transformedConfig)) {\n throw new InvalidConfigError({\n info: `Invalid config for model : '${this.modelName}'`,\n cause: new Error(\"'responseSchema' is required in config when 'responseFormat' is 'json_schema'\"),\n });\n } else {\n transformedConfig.response_format = {\n type: \"json_schema\",\n json_schema: transformedConfig.response_schema,\n };\n delete transformedConfig.response_schema;\n }\n } else {\n transformedConfig.response_format = { type: responseFormat };\n }\n }\n\n return transformedConfig;\n }\n\n transformMessages(messages: MessageType[]): ParamsType {\n if (!messages || (messages && messages.length === 0)) {\n return { messages: [] };\n }\n\n const parsedMessages = messages.map((message) => {\n const parsedMessage = Message().safeParse(message);\n if (!parsedMessage.success) {\n throw new InvalidMessagesError({ info: \"Invalid messages\", cause: parsedMessage.error });\n }\n return parsedMessage.data;\n });\n\n parsedMessages.forEach((message) => {\n message.content.forEach((content) => {\n if (!this.modelSchema.modalities.includes(content.modality)) {\n throw new InvalidMessagesError({\n info: `Invalid message content for model : '${this.modelName}'`,\n cause: new Error(`model : '${this.modelName}' does not support modality : '${content.modality}', \n available modalities : [${this.modelSchema.modalities.join(\", \")}]`),\n });\n }\n });\n });\n\n parsedMessages.forEach((message) => {\n if (!Object.keys(this.modelSchema.roles).includes(message.role)) {\n throw new InvalidMessagesError({\n info: `Invalid message content for model : '${this.modelName}'`,\n cause: new Error(`model : '${this.modelName}' does not support role : '${message.role}', \n available roles : [${Object.keys(this.modelSchema.roles).join(\", \")}]`),\n });\n }\n });\n\n const transformedMessages = parsedMessages.map((message) => {\n switch (message.role) {\n case SystemRoleLiteral: {\n const textContent: { type: \"text\"; text: string }[] = [];\n message.content.forEach((content) => {\n if (content.modality === TextModalityLiteral) {\n textContent.push({ type: \"text\", text: content.value });\n } else {\n throw new InvalidMessagesError({\n info: `Invalid message 'role' and 'modality' combination for model : ${this.modelName}`,\n cause: new Error(`role : '${message.role}' cannot have content with modality : '${content.modality}'`),\n });\n }\n });\n\n return {\n role: this.modelSchema.roles[message.role],\n content: textContent,\n };\n }\n\n case AssistantRoleLiteral: {\n const textContent: { type: \"text\"; text: string }[] = [];\n const toolCalls: { id: string; type: \"function\"; function: { name: string; arguments: string } }[] = [];\n message.content.forEach((content) => {\n if (content.modality === TextModalityLiteral) {\n textContent.push({ type: \"text\", text: content.value });\n } else if (content.modality === ToolCallModalityLiteral) {\n toolCalls.push({\n id: content.id,\n type: \"function\",\n function: { name: content.name, arguments: content.arguments },\n });\n } else {\n throw new InvalidMessagesError({\n info: `Invalid message 'role' and 'modality' combination for model : ${this.modelName}`,\n cause: new Error(`role : '${message.role}' cannot have content with modality : '${content.modality}'`),\n });\n }\n });\n\n return {\n role: this.modelSchema.roles[message.role],\n ...(textContent.length > 0 ? { content: textContent } : {}),\n ...(toolCalls.length > 0 ? { tool_calls: toolCalls } : {}),\n };\n }\n\n case UserRoleLiteral: {\n const textContent: { type: \"text\"; text: string }[] = [];\n const imageContent: { type: \"image_url\"; image_url: { url: string; detail: string } }[] = [];\n message.content.forEach((content) => {\n if (content.modality === TextModalityLiteral) {\n textContent.push({ type: \"text\", text: content.value });\n } else if (content.modality === ImageModalityLiteral) {\n imageContent.push({\n type: \"image_url\",\n image_url: {\n url: content.value.type === \"url\" ? content.value.url : content.value.base64,\n detail: content.detail,\n },\n });\n } else {\n throw new InvalidMessagesError({\n info: `Invalid message 'role' and 'modality' combination for model : ${this.modelName}`,\n cause: new Error(`role : '${message.role}' cannot have content with modality : '${content.modality}'`),\n });\n }\n });\n\n const combinedContent = [...textContent, ...imageContent];\n\n return {\n role: this.modelSchema.roles[message.role],\n content: combinedContent,\n };\n }\n\n case ToolRoleLiteral: {\n if (message.content.length !== 1) {\n throw new InvalidMessagesError({\n info: `Invalid message for role : '${message.role}'`,\n cause: new Error(`role : '${message.role}' must have exactly one content item`),\n });\n }\n\n if (message.content[0].modality !== ToolResponseModalityLiteral) {\n throw new InvalidMessagesError({\n info: `Invalid message 'role' and 'modality' combination for model : ${this.modelName}`,\n cause: new Error(`role : '${message.role}' must have content with modality : '${ToolResponseModalityLiteral}'`),\n });\n }\n\n const toolResponse = message.content[0] as ToolResponseContentType;\n return {\n role: this.modelSchema.roles[message.role],\n tool_call_id: toolResponse.id,\n content: toolResponse.data,\n };\n }\n\n default: {\n throw new InvalidMessagesError({\n info: `Invalid message 'role' for model : ${this.modelName}`,\n cause: new Error(`role : '${message.role}' is not supported, \n available roles : [${Object.keys(this.modelSchema.roles).join(\", \")}]`),\n });\n }\n }\n });\n\n return { messages: transformedMessages };\n }\n\n transformTools(tools: ToolType[]): ParamsType {\n if (!this.modelSchema.modalities.includes(ToolCallModalityLiteral)) {\n throw new InvalidToolsError({\n info: `Invalid tool 'modality' for model : ${this.modelName}`,\n cause: new Error(`model : '${this.modelName}' does not support tool modality : '${ToolCallModalityLiteral}'`),\n });\n }\n\n if (!tools || (tools && tools.length === 0)) {\n return { tools: [] as ToolType[] };\n }\n\n const parsedTools = tools.map((tool) => {\n const parsedTool = Tool().safeParse(tool);\n if (!parsedTool.success) {\n throw new InvalidToolsError({ info: \"Invalid tools\", cause: parsedTool.error });\n }\n return parsedTool.data;\n });\n\n const transformedTools = parsedTools.map((tool) => ({\n type: \"function\",\n function: tool.definition.schema,\n }));\n\n return { tools: transformedTools };\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n async getCompleteChatUrl(config?: ConfigType, messages?: MessageType[], tools?: ToolType[]): Promise<UrlType> {\n return new Promise((resolve) => {\n resolve(this.completeChatUrl);\n });\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n async getCompleteChatHeaders(config?: ConfigType, messages?: MessageType[], tools?: ToolType[]): Promise<HeadersType> {\n return new Promise((resolve) => {\n resolve(this.getDefaultHeaders());\n });\n }\n\n async getCompleteChatData(config: ConfigType, messages: MessageType[], tools?: ToolType[]): Promise<ParamsType> {\n const transformedConfig = this.transformConfig(config, messages, tools);\n const transformedMessages = this.transformMessages(messages);\n if (transformedMessages.messages && (transformedMessages.messages as MessageType[]).length === 0) {\n throw new InvalidMessagesError({\n info: \"Messages are required\",\n cause: new Error(\"Messages are required\"),\n });\n }\n\n const transformedTools = tools ? this.transformTools(tools) : {};\n\n return new Promise((resolve) => {\n resolve({\n ...this.getDefaultParams(),\n ...transformedConfig,\n ...transformedMessages,\n ...transformedTools,\n });\n });\n }\n\n transformCompleteChatResponse(response: any): ChatResponseType {\n const safe = OpenRouterCompleteChatResponse.safeParse(response);\n if (safe.success) {\n if (safe.data.choices.length === 0) {\n throw new ModelResponseError({\n info: \"Invalid response from model\",\n cause: new Error(`No choices in response : ${JSON.stringify(safe.data)}`),\n });\n }\n\n const parsedResponse: OpenRouterCompleteChatResponseType = safe.data;\n const messages: MessageType[] = [\n {\n role: AssistantRoleLiteral,\n content: [],\n },\n ];\n const message = parsedResponse.choices[0].message;\n if (message.content) {\n messages[0].content.push(createTextContent(message.content));\n }\n\n if (message.refusal) {\n messages[0].content.push(createTextContent(message.refusal));\n }\n\n if (message.tool_calls) {\n message.tool_calls.forEach((toolCall, index) => {\n messages[0].content.push(createToolCallContent(index, toolCall.id, toolCall.function.name, toolCall.function.arguments));\n });\n }\n\n let usage: ChatUsageType | undefined;\n if (parsedResponse.usage) {\n usage = {\n promptTokens: parsedResponse.usage.prompt_tokens,\n completionTokens: parsedResponse.usage.completion_tokens,\n totalTokens: parsedResponse.usage.total_tokens,\n };\n }\n\n const logProbs: ChatLogProbsType = [];\n const _logProbs = parsedResponse.choices[0].logprobs;\n if (_logProbs) {\n if (_logProbs.content) {\n logProbs.push(\n ..._logProbs.content.map((logProb) => ({\n token: logProb.token,\n logProb: logProb.logprob,\n bytes: logProb.bytes,\n topLogProbs: logProb.top_logprobs.map((topLogProb) => ({\n token: topLogProb.token,\n logProb: topLogProb.logprob,\n bytes: topLogProb.bytes,\n })),\n }))\n );\n }\n if (_logProbs.refusal) {\n logProbs.push(\n ..._logProbs.refusal.map((logProb) => ({\n token: logProb.token,\n logProb: logProb.logprob,\n bytes: logProb.bytes,\n topLogProbs: logProb.top_logprobs.map((topLogProb) => ({\n token: topLogProb.token,\n logProb: topLogProb.logprob,\n bytes: topLogProb.bytes,\n })),\n }))\n );\n }\n }\n\n return {\n messages: messages,\n usage: usage,\n logProbs: logProbs,\n };\n }\n\n throw new ModelResponseError({ info: \"Invalid response from model\", cause: safe.error });\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n async getStreamChatUrl(config?: ConfigType, messages?: MessageType[], tools?: ToolType[]): Promise<UrlType> {\n return new Promise((resolve) => {\n resolve(this.streamChatUrl);\n });\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n async getStreamChatHeaders(config?: ConfigType, messages?: MessageType[], tools?: ToolType[]): Promise<HeadersType> {\n return new Promise((resolve) => {\n resolve(this.getDefaultHeaders());\n });\n }\n\n async getStreamChatData(config: ConfigType, messages: MessageType[], tools?: ToolType[]): Promise<ParamsType> {\n const transformedConfig = this.transformConfig(config, messages, tools);\n const transformedMessages = this.transformMessages(messages);\n if (transformedMessages.messages && (transformedMessages.messages as MessageType[]).length === 0) {\n throw new InvalidMessagesError({\n info: \"Messages are required\",\n cause: new Error(\"Messages are required\"),\n });\n }\n\n const transformedTools = tools ? this.transformTools(tools) : {};\n\n return new Promise((resolve) => {\n resolve({\n stream: true,\n stream_options: { include_usage: true },\n ...this.getDefaultParams(),\n ...transformedConfig,\n ...transformedMessages,\n ...transformedTools,\n });\n });\n }\n\n async *transformStreamChatResponseChunk(\n chunk: string,\n buffer: string\n ): AsyncGenerator<{ partialResponse: PartialChatResponseType; buffer: string }> {\n const data = buffer + chunk;\n let lines: string[] = [];\n let newBuffer = \"\";\n\n // Split data into complete lines and new buffer\n let currentIndex = 0;\n while (currentIndex < data.length) {\n const newlineIndex = data.indexOf(\"\\n\", currentIndex);\n if (newlineIndex === -1) {\n newBuffer = data.substring(currentIndex);\n break;\n } else {\n const line = data.substring(currentIndex, newlineIndex).trim();\n if (line) {\n lines.push(line);\n }\n currentIndex = newlineIndex + 1;\n }\n }\n\n // Process each complete line\n for (const line of lines) {\n if (line === \"data: [DONE]\") {\n return; // End of stream\n }\n\n if (line.startsWith(\"data: \")) {\n const jsonStr = line.substring(\"data: \".length);\n try {\n const structuredLine = JSON.parse(jsonStr);\n const safe = OpenRouterStreamChatResponse.safeParse(structuredLine);\n if (safe.success) {\n const partialResponse: PartialChatResponseType = { partialMessages: [] };\n const parsedResponse: OpenRouterStreamChatResponseType = safe.data;\n // Process message content\n if (parsedResponse.choices.length > 0) {\n const message = parsedResponse.choices[0].delta;\n if (message !== undefined && Object.keys(message).length !== 0) {\n if (\"content\" in message && message.content !== null) {\n partialResponse.partialMessages.push(createPartialTextMessage(AssistantRoleLiteral, message.content as string));\n } else if (\"refusal\" in message && message.refusal !== null) {\n partialResponse.partialMessages.push(createPartialTextMessage(AssistantRoleLiteral, message.refusal as string));\n } else if (\"tool_calls\" in message && message.tool_calls !== undefined) {\n const toolCall = message.tool_calls.at(0)!;\n partialResponse.partialMessages.push(\n createPartialToolCallMessage(\n AssistantRoleLiteral,\n toolCall.index,\n toolCall.id,\n toolCall.function?.name,\n toolCall.function?.arguments\n )\n );\n }\n }\n }\n\n if (parsedResponse.usage) {\n partialResponse.usage = {\n promptTokens: parsedResponse.usage.prompt_tokens,\n completionTokens: parsedResponse.usage.completion_tokens,\n totalTokens: parsedResponse.usage.total_tokens,\n };\n }\n yield { partialResponse: partialResponse, buffer: newBuffer };\n } else {\n throw new ModelResponseError({ info: \"Invalid response from model\", cause: safe.error });\n }\n } catch (error) {\n throw new ModelResponseError({\n info: `Malformed JSON received in stream: ${jsonStr}`,\n cause: error,\n });\n }\n }\n }\n\n // Yield the updated buffer after processing all lines\n yield { partialResponse: { partialMessages: [] }, buffer: newBuffer };\n }\n async *transformProxyStreamChatResponseChunk(\n chunk: string,\n buffer: string,\n data?: any,\n headers?: Record<string, string>,\n query?: Record<string, string>\n ): AsyncGenerator<{ partialResponse: PartialChatResponseType; buffer: string }> {\n // Directly delegate to transformStreamChatResponseChunk\n yield* this.transformStreamChatResponseChunk(chunk, buffer);\n }\n async getProxyStreamChatUrl(data?: any, headers?: Record<string, string>, query?: Record<string, string>): Promise<UrlType> {\n return new Promise((resolve) => {\n resolve(this.streamChatUrl);\n });\n }\n async getProxyCompleteChatUrl(data?: any, headers?: Record<string, string>, query?: Record<string, string>): Promise<UrlType> {\n return new Promise((resolve) => {\n resolve(this.completeChatUrl);\n });\n }\n\n async getProxyCompleteChatHeaders(data?: any, headers?: Record<string, string>, query?: Record<string, string>): Promise<HeadersType> {\n if (!headers) {\n return {};\n }\n const sanitizedHeaders: Record<string, string> = { ...headers };\n\n delete sanitizedHeaders.host;\n delete sanitizedHeaders[\"content-length\"];\n return sanitizedHeaders;\n }\n async getProxyStreamChatHeaders(data?: any, headers?: Record<string, string>, query?: Record<string, string>): Promise<HeadersType> {\n // Directly delegate to getProxyCompleteChatHeaders for now\n return await this.getProxyCompleteChatHeaders(data, headers, query);\n }\n\n getModelPricing(): ChatModelPriceType {\n // Check if the modelName exists in pricingData before accessing it\n if (!(this.modelName in pricingData)) {\n throw new ModelResponseError({\n info: `Invalid model pricing for model : '${this.modelName}'`,\n cause: new Error(`No pricing configuration found for model \"${this.modelName}\"`),\n });\n }\n\n const entry = pricingData[this.modelName as keyof typeof pricingData];\n return entry as ChatModelPriceType;\n }\n}\n\nexport { BaseChatModel, BaseChatModelOptions, type BaseChatModelOptionsType };\n","import { ChatModelSchema } from \"@adaline/provider\";\n\nimport { OpenRouterChatModelConfigs } from \"../../configs\";\nimport {\n OpenRouterChatModelModalities,\n OpenRouterChatModelModalitiesEnum,\n OpenRouterChatModelRoles,\n OpenRouterChatModelRolesMap,\n} from \"./types\";\n\nconst BaseChatModelSchema = ChatModelSchema(OpenRouterChatModelRoles, OpenRouterChatModelModalitiesEnum).parse({\n name: \"__base__\",\n description: \"Base chat model for Open Router\",\n maxInputTokens: 128000,\n maxOutputTokens: 128000,\n roles: OpenRouterChatModelRolesMap,\n modalities: OpenRouterChatModelModalities,\n config: {\n def: OpenRouterChatModelConfigs.base(128000, 4).def,\n schema: OpenRouterChatModelConfigs.base(128000, 4).schema,\n },\n});\n\nexport { BaseChatModelSchema };\n"]}
1
+ {"version":3,"sources":["../src/configs/chat-model/base.config.chat-model.open-router.ts","../../../../packages/types/src/message/roles.ts","../../../../packages/types/src/message/content/image-content.ts","../../../../packages/types/src/message/content/pdf-content.ts","../../../../packages/types/src/message/content/reasoning-content.ts","../../../../packages/types/src/message/content/text-content.ts","../../../../packages/types/src/message/content/tool-call-content.ts","../../../../packages/types/src/message/content/tool-response-content.ts","../../../../packages/types/src/message/content/content.ts","../../../../packages/types/src/message/message.ts","../../../../packages/types/src/chat/chat-response.ts","../../../../packages/types/src/config/config.ts","../../../../packages/types/src/config/mcp.config.ts","../../../../packages/types/src/config/response-schema.config.ts","../../../../packages/types/src/embedding/embedding-requests.ts","../../../../packages/types/src/embedding/embedding-response.ts","../../../../packages/types/src/errors/gateway-base.error.ts","../../../../packages/types/src/pricing/pricing-tiers.ts","../../../../packages/types/src/tool/function-tool.ts","../../../../packages/types/src/tool/tool.ts","../../../../packages/types/src/utils/create-message.ts","../../../../packages/provider/src/errors/provider.error.ts","../../../../packages/provider/src/errors/model-response.error.ts","../../../../packages/provider/src/errors/invalid-model-request.error.ts","../../../../packages/provider/src/errors/invalid-config.error.ts","../../../../packages/provider/src/errors/invalid-messages.error.ts","../../../../packages/provider/src/errors/invalid-tools.error.ts","../../../../packages/provider/src/types/config/multi-string-config-item.ts","../../../../packages/provider/src/types/config/object-schema-config-item.ts","../../../../packages/provider/src/types/config/paired-select-config-item.ts","../../../../packages/provider/src/types/config/range-config-item.ts","../../../../packages/provider/src/types/config/select-boolean-config-item.ts","../../../../packages/provider/src/types/config/select-string-config-item.ts","../../../../packages/provider/src/types/config/config-item.ts","../../../../packages/provider/src/model/chat-model/chat-model.schema.v1.ts","../../../../packages/provider/src/types/headers.ts","../../../../packages/provider/src/types/params.ts","../../../../packages/provider/src/types/url.ts","../../../../packages/provider/src/utils/common-config.def.chat-model.ts","../../../../packages/provider/src/utils/remove-undefined-entries.ts","../../../../packages/provider/src/utils/base64.ts","../../../../packages/provider/src/utils/url.ts","../src/configs/chat-model/common.config.chat-model.open-router.ts","../src/configs/configs.openai-router.ts","../src/provider/provider.open-router.ts","../src/models/pricing.json","../src/models/chat-models/types/roles.chat-model.open-router.ts","../src/models/chat-models/types/modalities.chat-model.open-router.ts","../src/models/chat-models/types/response.chat-model.open-router.ts","../src/models/chat-models/types/request.chat-model.open-router.ts","../src/models/chat-models/base-chat-model.open-router.ts","../src/models/chat-models/base-chat-model-schema.open-router.ts"],"names":["SystemRoleLiteral","UserRoleLiteral","AssistantRoleLiteral","ToolRoleLiteral","RoleLiterals","RoleEnum","z","PartialRoleLiterals","PartialRoleEnum","ImageModalityLiteral","Base64ImageContentTypeLiteral","Base64ImageContentMediaTypeLiterals","Base64ImageContentValue","UrlImageContentTypeLiteral","UrlImageContentValue","ImageContentValue","ImageContentDetails","ImageContentDetailsLiteral","ImageContent","Metadata","PdfModalityLiteral","Base64PdfContentTypeLiteral","Base64PdfContentValue","UrlPdfContentTypeLiteral","UrlPdfContentValue","PdfContentValue","PdfContent","ReasoningModalityLiteral","PartialReasoningModalityLiteral","ReasoningContentTypeLiteral","RedactedReasoningContentTypeLiteral","ReasoningContentValue","RedactedReasoningContentValue","ReasoningContentValueUnion","ReasoningContent","PartialReasoningContentValue","PartialReasoningContentValueUnion","PartialReasoningContent","TextModalityLiteral","TextContent","PartialTextModalityLiteral","PartialTextContent","ToolCallModalityLiteral","ToolCallContent","PartialToolCallModalityLiteral","PartialToolCallContent","ToolResponseModalityLiteral","ToolResponseContent","PartialToolResponseModalityLiteral","PartialToolResponseContent","ModalityLiterals","ModalityEnum","Content","TextContentMetadata","ImageContentMetadata","PdfContentMetadata","ToolCallContentMetadata","ToolResponseContentMetadata","ReasoningContentMetadata","PartialModalityLiterals","PartialContent","PartialTextContentMetadata","PartialToolCallContentMetadata","PartialReasoningContentMetadata","PartialToolResponseContentMetadata","Message","Role","MessageMetadata","PartialMessage","ChatUsage","ChatBaseLogProb","ChatLogProb","ChatLogProbs","PartialChatUsage","Config","McpServerToolConfiguration","McpServer","url","ResponseSchemaTypes","ResponseSchemaTypesLiteral","ResponseSchemaProperty","ResponseSchemaStructure","ResponseSchema","EmbeddingTextModalityLiteral","EmbeddingTokenModalityLiteral","EmbeddingModalityLiterals","TextEmbeddingRequests","FloatEmbeddingLiteral","FloatEmbedding","Base64EmbeddingLiteral","Base64Embedding","EmbeddingsUsage","safeStringify","obj","seen","key","value","getErrorMessage","error","GatewayBaseErrorLiteral","GatewayBaseError","_GatewayBaseError","info","cause","name","ChatModelTokenPairPrice","ChatModelTokenTypePrice","ChatModelTokenRangePrice","t","data","ctx","tokenRanges","i","prev","curr","last","FunctionToolLiteral","FunctionParameterTypesLiteral","FunctionParameter","FunctionParameters","Function","ToolTypesLiteral","FunctionRequestRetry","FunctionRequestHttp","FunctionRequest","FunctionTool","ToolLiterals","ToolEnum","Tool","FunctionToolMetadata","createTextContent","content","createToolCallContent","index","id","args","serverName","createPartialTextMessage","role","createPartialToolCallMessage","ProviderErrorLiteral","ProviderError","_ProviderError","ModelResponseErrorLiteral","ModelResponseError","_ModelResponseError","InvalidModelRequestErrorLiteral","InvalidModelRequestError","_InvalidModelRequestError","InvalidConfigErrorLiteral","InvalidConfigError","_InvalidConfigError","InvalidMessagesErrorLiteral","InvalidMessagesError","_InvalidMessagesError","InvalidToolsErrorLiteral","InvalidToolsError","_InvalidToolsError","MultiStringConfigItemTypeLiteral","MultiStringConfigItemDef","MultiStringConfigItemSchema","max","MultiStringConfigItem","__spreadValues","ObjectSchemaConfigItemTypeLiteral","ObjectSchemaConfigItemDef","PairedSelectConfigItemTypeLiteral","PairedSelectChoice","PairedSelectFieldDef","PairedSelectConfigItemDef","RangeConfigItemTypeLiteral","RangeConfigItemDef","RangeConfigItemSchema","min","step","defaultValue","RangeConfigItem","SelectBooleanConfigItemTypeLiteral","SelectBooleanConfigItemDef","SelectBooleanConfigItemSchema","SelectBooleanConfigItem","SelectStringConfigItemTypeLiteral","SelectStringConfigItemDef","SelectStringConfigItemSchema","choices","SelectStringConfigItem","ConfigItemLiterals","ConfigItemEnum","ConfigItemDef","ChatModelSchema","Roles","Modalities","config","_a","_b","defKeys","schemaKeys","Url","TEMPERATURE","MAX_TOKENS","MAX_REASONING_TOKENS","STOP","TOP_A","TOP_P","TOP_K","MIN_P","FREQUENCY_PENALTY","PRESENCE_PENALTY","SEED","REPETITION_PENALTY","LOG_PROBS","TOP_LOG_PROBS","ECHO","RESPONSE_FORMAT","RESPONSE_FORMAT_WITH_SCHEMA","RESPONSE_SCHEMA","MCP_SERVERS","CHAT_CONFIG","removeUndefinedEntries","record","_","convertBase64ToUint8Array","getMimeTypeFromBase64","base64","urlWithoutTrailingSlash","temperature","Tt","an","maxTokens","maxOutputTokens","stop","maxSequences","ct","topA","topK","topP","minP","frequencyPenalty","presencePenalty","repetitionPenalty","seed","logProbs","wt","topLogProbs","toolChoice","Pt","responseFormat","ChatModelBaseConfigSchema","ChatModelBaseConfigDef","OpenRouterChatModelConfigs","ProviderLiteral","OpenRouter","BaseChatModelSchema","options","model","BaseChatModel","parsedOptions","BaseChatModelOptions","acc","D","pricing_default","OpenRouterChatModelRoles","Xe","Ye","J","en","OpenRouterChatModelRolesMap","OpenRouterChatModelModalities","B","W","N","OpenRouterChatModelModalitiesEnum","OpenRouterBaseLogProb","OpenRouterLogProb","OpenRouterToolCallsCompleteChatResponse","OpenRouterCompleteChatResponse","OpenRouterToolCallsStreamChatResponse","OpenRouterStreamChatResponse","OpenRouterChatRequestTool","OpenRouterChatRequestToolChoiceEnum","OpenRouterChatRequestToolChoiceFunction","OpenRouterChatRequestResponseFormat","OpenRouterChatRequestTextContent","OpenRouterChatRequestImageContent","OpenRouterChatRequestToolCallContent","OpenRouterChatRequestSystemMessage","OpenRouterChatRequestUserMessage","OpenRouterChatRequestAssistantMessage","OpenRouterChatRequestToolMessage","OpenRouterChatRequestMessage","OpenRouterChatRequest","modelSchema","Cn","responseHeaders","messages","message","request","safeRequest","q","parsedRequest","modelName","_config","dn","toolCallMap","_content","c","me","ue","assistantContent","toolCall","toolCallContent","toolResponse","tools","tool","_toolChoice","_parsedConfig","G","parsedConfig","transformedConfig","def","paramKey","paramValue","configToolChoice","parsedMessages","parsedMessage","j","Z","textContent","toolCalls","imageContent","combinedContent","H","parsedTool","lo","__async","resolve","transformedMessages","transformedTools","response","safe","parsedResponse","fo","Co","usage","_logProbs","logProb","topLogProb","chunk","buffer","__asyncGenerator","lines","newBuffer","currentIndex","newlineIndex","line","jsonStr","structuredLine","partialResponse","Zo","ho","headers","query","__yieldStar","sanitizedHeaders","Zt"],"mappings":"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","file":"index.mjs","sourcesContent":["import { z } from \"zod\";\n\nimport {\n frequencyPenalty,\n logProbs,\n maxTokens,\n presencePenalty,\n seed,\n stop,\n temperature,\n toolChoice,\n topLogProbs,\n topP,\n} from \"./common.config.chat-model.open-router\";\n\nconst ChatModelBaseConfigSchema = (maxOutputTokens: number, maxSequences: number) =>\n z.object({\n temperature: temperature.schema,\n maxTokens: maxTokens(maxOutputTokens).schema,\n stop: stop(maxSequences).schema,\n topP: topP.schema,\n frequencyPenalty: frequencyPenalty.schema,\n presencePenalty: presencePenalty.schema,\n seed: seed.schema.transform((value) => (value === 0 ? undefined : value)),\n logProbs: logProbs.schema,\n topLogProbs: topLogProbs.schema,\n toolChoice: toolChoice.schema,\n });\n\nconst ChatModelBaseConfigDef = (maxOutputTokens: number, maxSequences: number) =>\n ({\n temperature: temperature.def,\n maxTokens: maxTokens(maxOutputTokens).def,\n stop: stop(maxSequences).def,\n topP: topP.def,\n frequencyPenalty: frequencyPenalty.def,\n presencePenalty: presencePenalty.def,\n seed: seed.def,\n logProbs: logProbs.def,\n topLogProbs: topLogProbs.def,\n toolChoice: toolChoice.def,\n }) as const;\n\nexport { ChatModelBaseConfigDef, ChatModelBaseConfigSchema };\n","import { z } from \"zod\";\n\nconst SystemRoleLiteral = \"system\" as const;\nconst UserRoleLiteral = \"user\" as const;\nconst AssistantRoleLiteral = \"assistant\" as const;\nconst ToolRoleLiteral = \"tool\" as const;\n\nconst RoleLiterals = [SystemRoleLiteral, UserRoleLiteral, AssistantRoleLiteral, ToolRoleLiteral] as const;\nconst RoleEnum = z.enum(RoleLiterals);\ntype RoleEnumType = z.infer<typeof RoleEnum>;\n\nconst PartialRoleLiterals = [AssistantRoleLiteral] as const;\nconst PartialRoleEnum = z.enum(PartialRoleLiterals);\ntype PartialRoleEnumType = z.infer<typeof PartialRoleEnum>;\n\nexport {\n UserRoleLiteral,\n ToolRoleLiteral,\n SystemRoleLiteral,\n AssistantRoleLiteral,\n RoleEnum,\n RoleLiterals,\n PartialRoleEnum,\n PartialRoleLiterals,\n type RoleEnumType,\n type PartialRoleEnumType,\n};\n","import { z } from \"zod\";\n\nconst ImageModalityLiteral = \"image\" as const;\n\nconst Base64ImageContentTypeLiteral = \"base64\" as const;\nconst Base64ImageContentMediaTypeLiterals = [\"png\", \"jpeg\", \"webp\", \"gif\"] as const;\nconst Base64ImageContentValue = z.object({\n type: z.literal(Base64ImageContentTypeLiteral),\n base64: z.string(),\n mediaType: z.enum(Base64ImageContentMediaTypeLiterals),\n});\ntype Base64ImageContentValueType = z.infer<typeof Base64ImageContentValue>;\n\nconst UrlImageContentTypeLiteral = \"url\" as const;\nconst UrlImageContentValue = z.object({\n type: z.literal(UrlImageContentTypeLiteral),\n url: z.string(),\n});\ntype UrlImageContentValueType = z.infer<typeof UrlImageContentValue>;\n\nconst ImageContentValue = z.discriminatedUnion(\"type\", [Base64ImageContentValue, UrlImageContentValue]);\ntype ImageContentValueType = z.infer<typeof ImageContentValue>;\n\nconst ImageContentDetails = [\"low\", \"medium\", \"high\", \"auto\"] as const;\nconst ImageContentDetailsLiteral = z.enum(ImageContentDetails);\ntype ImageContentDetailsLiteralType = z.infer<typeof ImageContentDetailsLiteral>;\nconst ImageContent = <M extends z.ZodTypeAny = z.ZodUndefined>(Metadata: M = z.undefined() as M) =>\n z.object({\n modality: z.literal(ImageModalityLiteral),\n detail: ImageContentDetailsLiteral,\n value: ImageContentValue,\n metadata: Metadata,\n });\ntype ImageContentType<M extends z.ZodTypeAny = z.ZodUndefined> = z.infer<ReturnType<typeof ImageContent<M>>>;\n\nexport {\n Base64ImageContentValue,\n ImageContent,\n ImageContentDetails,\n ImageContentDetailsLiteral,\n ImageModalityLiteral,\n UrlImageContentValue,\n UrlImageContentTypeLiteral,\n Base64ImageContentTypeLiteral,\n Base64ImageContentMediaTypeLiterals,\n type Base64ImageContentValueType,\n type ImageContentDetailsLiteralType,\n type ImageContentType,\n type ImageContentValueType,\n type UrlImageContentValueType,\n};\n","import { z } from \"zod\";\n\nconst PdfModalityLiteral = \"pdf\" as const;\n\nconst Base64PdfContentTypeLiteral = \"base64\" as const;\nconst Base64PdfContentValue = z.object({\n type: z.literal(Base64PdfContentTypeLiteral),\n base64: z.string(),\n});\ntype Base64PdfContentValueType = z.infer<typeof Base64PdfContentValue>;\n\nconst UrlPdfContentTypeLiteral = \"url\" as const;\nconst UrlPdfContentValue = z.object({\n type: z.literal(UrlPdfContentTypeLiteral),\n url: z.string(),\n});\ntype UrlPdfContentValueType = z.infer<typeof UrlPdfContentValue>;\n\nconst PdfContentValue = z.discriminatedUnion(\"type\", [Base64PdfContentValue, UrlPdfContentValue]);\ntype PdfContentValueType = z.infer<typeof PdfContentValue>;\n\nconst PdfContent = <M extends z.ZodTypeAny = z.ZodUndefined>(Metadata: M = z.undefined() as M) =>\n z.object({\n modality: z.literal(PdfModalityLiteral),\n value: PdfContentValue,\n file: z.object({\n name: z.string(),\n id: z.string(),\n size: z.number().optional(),\n }),\n metadata: Metadata,\n });\ntype PdfContentType<M extends z.ZodTypeAny = z.ZodUndefined> = z.infer<ReturnType<typeof PdfContent<M>>>;\n\nexport {\n Base64PdfContentValue,\n PdfContent,\n PdfModalityLiteral,\n UrlPdfContentValue,\n UrlPdfContentTypeLiteral,\n Base64PdfContentTypeLiteral,\n type Base64PdfContentValueType,\n type PdfContentType,\n type PdfContentValueType,\n type UrlPdfContentValueType,\n};\n","import { z } from \"zod\";\n\nconst ReasoningModalityLiteral = \"reasoning\" as const;\nconst PartialReasoningModalityLiteral = \"partial-reasoning\" as const;\n\nconst ReasoningContentTypeLiteral = \"thinking\" as const;\nconst RedactedReasoningContentTypeLiteral = \"redacted\" as const;\n\nconst ReasoningContentValue = z.object({\n type: z.literal(ReasoningContentTypeLiteral),\n thinking: z.string(),\n signature: z.string(),\n});\ntype ReasoningContentValueType = z.infer<typeof ReasoningContentValue>;\n\nconst RedactedReasoningContentValue = z.object({\n type: z.literal(RedactedReasoningContentTypeLiteral),\n data: z.string()\n});\ntype RedactedReasoningContentValueType = z.infer<typeof RedactedReasoningContentValue>;\n\nconst ReasoningContentValueUnion = z.discriminatedUnion(\"type\", [ ReasoningContentValue, RedactedReasoningContentValue ]);\ntype ReasoningContentValueUnionType = z.infer<typeof ReasoningContentValueUnion>;\n\nconst ReasoningContent = <M extends z.ZodTypeAny = z.ZodUndefined>(Metadata: M = z.undefined() as M) =>\n z.object({\n modality: z.literal(ReasoningModalityLiteral),\n value: ReasoningContentValueUnion,\n metadata: Metadata,\n });\n\ntype ReasoningContentType<M extends z.ZodTypeAny = z.ZodUndefined> = z.infer<ReturnType<typeof ReasoningContent<M>>>;\n\nconst PartialReasoningContentValue = z.object({\n type: z.literal(ReasoningContentTypeLiteral),\n thinking: ReasoningContentValue.shape.thinking.optional(),\n signature: ReasoningContentValue.shape.signature.optional(),\n});\nconst PartialReasoningContentValueUnion = z.discriminatedUnion(\"type\", [ \n PartialReasoningContentValue, \n RedactedReasoningContentValue \n]);\n\nconst PartialReasoningContent = <M extends z.ZodTypeAny = z.ZodUndefined>(Metadata: M = z.undefined() as M) =>\n z.object({\n modality: z.literal(PartialReasoningModalityLiteral),\n value: PartialReasoningContentValueUnion,\n metadata: Metadata,\n });\ntype PartialReasoningContentType<M extends z.ZodTypeAny = z.ZodUndefined> = z.infer<ReturnType<typeof PartialReasoningContent<M>>>;\n\nexport {\n ReasoningContent,\n PartialReasoningContent,\n PartialReasoningModalityLiteral,\n ReasoningContentTypeLiteral,\n ReasoningContentValue,\n PartialReasoningContentValue,\n ReasoningContentValueUnion,\n PartialReasoningContentValueUnion,\n ReasoningModalityLiteral,\n RedactedReasoningContentTypeLiteral,\n RedactedReasoningContentValue,\n type PartialReasoningContentType,\n type ReasoningContentType,\n type ReasoningContentValueType,\n type ReasoningContentValueUnionType,\n type RedactedReasoningContentValueType,\n};\n","import { z } from \"zod\";\n\nconst TextModalityLiteral = \"text\" as const;\n\nconst TextContent = <M extends z.ZodTypeAny = z.ZodUndefined>(Metadata: M = z.undefined() as M) =>\n z.object({\n modality: z.literal(TextModalityLiteral),\n value: z.string(),\n metadata: Metadata,\n });\ntype TextContentType<M extends z.ZodTypeAny = z.ZodUndefined> = z.infer<ReturnType<typeof TextContent<M>>>;\nconst PartialTextModalityLiteral = \"partial-text\" as const;\n\nconst PartialTextContent = <M extends z.ZodTypeAny = z.ZodUndefined>(Metadata: M = z.undefined() as M) =>\n z.object({\n modality: z.literal(PartialTextModalityLiteral),\n value: z.string(),\n metadata: Metadata,\n });\ntype PartialTextContentType<M extends z.ZodTypeAny = z.ZodUndefined> = z.infer<ReturnType<typeof PartialTextContent<M>>>;\n\nexport {\n TextContent,\n PartialTextContent,\n TextModalityLiteral,\n PartialTextModalityLiteral,\n type TextContentType,\n type PartialTextContentType,\n};\n","import { z } from \"zod\";\n\nconst ToolCallModalityLiteral = \"tool-call\" as const;\n\nconst ToolCallContent = <M extends z.ZodTypeAny = z.ZodUndefined>(Metadata: M = z.undefined() as M) =>\n z.object({\n modality: z.literal(ToolCallModalityLiteral),\n index: z.number().int().nonnegative(),\n id: z.string().min(1),\n name: z.string().min(1),\n arguments: z.string(),\n serverName: z.string().optional(),\n metadata: Metadata,\n });\ntype ToolCallContentType<M extends z.ZodTypeAny = z.ZodUndefined> = z.infer<ReturnType<typeof ToolCallContent<M>>>;\nconst PartialToolCallModalityLiteral = \"partial-tool-call\" as const;\n\nconst PartialToolCallContent = <M extends z.ZodTypeAny = z.ZodUndefined>(Metadata: M = z.undefined() as M) =>\n z.object({\n modality: z.literal(PartialToolCallModalityLiteral),\n index: z.number().int().nonnegative(),\n id: z.string().optional(),\n name: z.string().optional(),\n arguments: z.string().optional(),\n serverName: z.string().optional(),\n metadata: Metadata,\n });\ntype PartialToolCallContentType<M extends z.ZodTypeAny = z.ZodUndefined> = z.infer<ReturnType<typeof PartialToolCallContent<M>>>;\n\nexport {\n PartialToolCallContent,\n PartialToolCallModalityLiteral,\n ToolCallContent,\n ToolCallModalityLiteral,\n type PartialToolCallContentType,\n type ToolCallContentType,\n};\n","import { z } from \"zod\";\n\nconst ToolResponseModalityLiteral = \"tool-response\" as const;\n\nconst ToolResponseContent = <M extends z.ZodTypeAny = z.ZodUndefined>(Metadata: M = z.undefined() as M) =>\n z.object({\n modality: z.literal(ToolResponseModalityLiteral),\n index: z.number().int().nonnegative(),\n id: z.string().min(1),\n name: z.string().min(1),\n data: z.string(),\n apiResponse: z\n .object({\n statusCode: z.number().int().nonnegative(),\n })\n .optional(),\n metadata: Metadata,\n });\ntype ToolResponseContentType<M extends z.ZodTypeAny = z.ZodUndefined> = z.infer<ReturnType<typeof ToolResponseContent<M>>>;\n\nconst PartialToolResponseModalityLiteral = \"partial-tool-response\" as const;\n\nconst PartialToolResponseContent = <M extends z.ZodTypeAny = z.ZodUndefined>(Metadata: M = z.undefined() as M) =>\n z.object({\n modality: z.literal(PartialToolResponseModalityLiteral),\n index: z.number().int().nonnegative(),\n id: z.string().optional(),\n name: z.string().optional(),\n data: z.string().optional(),\n apiResponse: z\n .object({\n statusCode: z.number().int().nonnegative(),\n })\n .optional(),\n metadata: Metadata,\n });\ntype PartialToolResponseContentType<M extends z.ZodTypeAny = z.ZodUndefined> = z.infer<ReturnType<typeof PartialToolResponseContent<M>>>;\n\nexport {\n PartialToolResponseContent,\n PartialToolResponseModalityLiteral,\n ToolResponseContent,\n ToolResponseModalityLiteral,\n type PartialToolResponseContentType,\n type ToolResponseContentType,\n};\n","import { z } from \"zod\";\n\nimport { ImageContent, ImageModalityLiteral } from \"./image-content\";\nimport { PdfContent, PdfModalityLiteral } from \"./pdf-content\";\nimport { PartialReasoningContent, PartialReasoningModalityLiteral, ReasoningContent, ReasoningModalityLiteral } from \"./reasoning-content\";\nimport { PartialTextContent, PartialTextModalityLiteral, TextContent, TextModalityLiteral } from \"./text-content\";\nimport { PartialToolCallContent, PartialToolCallModalityLiteral, ToolCallContent, ToolCallModalityLiteral } from \"./tool-call-content\";\nimport { PartialToolResponseContent, ToolResponseContent, ToolResponseModalityLiteral } from \"./tool-response-content\";\n\nconst ModalityLiterals = [\n TextModalityLiteral,\n ImageModalityLiteral,\n PdfModalityLiteral,\n ToolCallModalityLiteral,\n ToolResponseModalityLiteral,\n ReasoningModalityLiteral,\n] as const;\nconst ModalityEnum = z.enum(ModalityLiterals);\ntype ModalityEnumType = z.infer<typeof ModalityEnum>;\n\nconst Content = <\n TCM extends z.ZodTypeAny = z.ZodUndefined,\n ICM extends z.ZodTypeAny = z.ZodUndefined,\n PCM extends z.ZodTypeAny = z.ZodUndefined,\n CCM extends z.ZodTypeAny = z.ZodUndefined,\n RCM extends z.ZodTypeAny = z.ZodUndefined,\n TCCM extends z.ZodTypeAny = z.ZodUndefined,\n>(\n TextContentMetadata: TCM = z.undefined() as TCM,\n ImageContentMetadata: ICM = z.undefined() as ICM,\n PdfContentMetadata: PCM = z.undefined() as PCM,\n ToolCallContentMetadata: CCM = z.undefined() as CCM,\n ToolResponseContentMetadata: RCM = z.undefined() as RCM,\n ReasoningContentMetadata: TCCM = z.undefined() as TCCM\n) =>\n z.discriminatedUnion(\"modality\", [\n TextContent(TextContentMetadata),\n ImageContent(ImageContentMetadata),\n PdfContent(PdfContentMetadata),\n ToolCallContent(ToolCallContentMetadata),\n ToolResponseContent(ToolResponseContentMetadata),\n ReasoningContent(ReasoningContentMetadata),\n ]);\ntype ContentType<\n TCM extends z.ZodTypeAny = z.ZodUndefined,\n ICM extends z.ZodTypeAny = z.ZodUndefined,\n CCM extends z.ZodTypeAny = z.ZodUndefined,\n RCM extends z.ZodTypeAny = z.ZodUndefined,\n> = z.infer<ReturnType<typeof Content<TCM, ICM, CCM, RCM>>>;\n\nconst PartialModalityLiterals = [PartialTextModalityLiteral, PartialToolCallModalityLiteral, PartialReasoningModalityLiteral] as const;\nconst PartialModalityEnum = z.enum(PartialModalityLiterals);\ntype PartialModalityEnumType = z.infer<typeof PartialModalityEnum>;\n\nconst PartialContent = <\n TCM extends z.ZodTypeAny = z.ZodUndefined,\n CCM extends z.ZodTypeAny = z.ZodUndefined,\n RCM extends z.ZodTypeAny = z.ZodUndefined,\n TPCM extends z.ZodTypeAny = z.ZodUndefined,\n>(\n PartialTextContentMetadata: TCM = z.undefined() as TCM,\n PartialToolCallContentMetadata: CCM = z.undefined() as CCM,\n PartialReasoningContentMetadata: z.ZodTypeAny = z.undefined() as z.ZodTypeAny as RCM,\n PartialToolResponseContentMetadata: TPCM = z.undefined() as TPCM\n) =>\n z.discriminatedUnion(\"modality\", [\n PartialTextContent(PartialTextContentMetadata),\n PartialToolCallContent(PartialToolCallContentMetadata),\n PartialReasoningContent(PartialReasoningContentMetadata),\n PartialToolResponseContent(PartialToolResponseContentMetadata),\n ]);\ntype PartialContentType<\n TCM extends z.ZodTypeAny = z.ZodUndefined,\n CCM extends z.ZodTypeAny = z.ZodUndefined,\n TPCM extends z.ZodTypeAny = z.ZodUndefined,\n> = z.infer<ReturnType<typeof PartialContent<TCM, CCM, TPCM>>>;\n\nexport {\n Content,\n ModalityEnum,\n ModalityLiterals,\n PartialContent,\n PartialModalityEnum,\n PartialModalityLiterals,\n type ContentType,\n type ModalityEnumType,\n type PartialContentType,\n type PartialModalityEnumType,\n};\n","import { z } from \"zod\";\n\nimport { Content, PartialContent } from \"./content\";\nimport { PartialRoleEnum, RoleEnum } from \"./roles\";\n\nconst Message = <\n R extends z.ZodEnum<[string, ...string[]]> = typeof RoleEnum,\n TCM extends z.ZodTypeAny = z.ZodUndefined,\n ICM extends z.ZodTypeAny = z.ZodUndefined,\n CCM extends z.ZodTypeAny = z.ZodUndefined,\n RCM extends z.ZodTypeAny = z.ZodUndefined,\n RTCM extends z.ZodTypeAny = z.ZodUndefined,\n PCCM extends z.ZodTypeAny = z.ZodUndefined,\n MM extends z.ZodTypeAny = z.ZodUndefined,\n>(\n Role: R = RoleEnum as unknown as R,\n TextContentMetadata: TCM = z.undefined() as TCM,\n ImageContentMetadata: ICM = z.undefined() as ICM,\n ToolCallContentMetadata: CCM = z.undefined() as CCM,\n ToolResponseContentMetadata: RCM = z.undefined() as RCM,\n PdfContentMetadata: PCCM = z.undefined() as PCCM,\n ReasoningContentMetadata: z.ZodTypeAny = z.undefined() as RTCM,\n MessageMetadata: MM = z.undefined() as MM\n) =>\n z.object({\n role: Role,\n content: z.array(\n Content(\n TextContentMetadata,\n ImageContentMetadata,\n ToolCallContentMetadata,\n ToolResponseContentMetadata,\n ReasoningContentMetadata,\n PdfContentMetadata\n )\n ),\n metadata: MessageMetadata,\n });\ntype MessageType<\n R extends z.ZodEnum<[string, ...string[]]> = typeof RoleEnum,\n TCM extends z.ZodTypeAny = z.ZodUndefined,\n ICM extends z.ZodTypeAny = z.ZodUndefined,\n CCM extends z.ZodTypeAny = z.ZodUndefined,\n RCM extends z.ZodTypeAny = z.ZodUndefined,\n RTCM extends z.ZodTypeAny = z.ZodUndefined,\n PCCM extends z.ZodTypeAny = z.ZodUndefined,\n MM extends z.ZodTypeAny = z.ZodUndefined,\n> = z.infer<ReturnType<typeof Message<R, TCM, ICM, CCM, RCM, PCCM, RTCM, MM>>>;\n\nconst PartialMessage = <\n R extends z.ZodEnum<[string, ...string[]]> = typeof PartialRoleEnum,\n TCM extends z.ZodTypeAny = z.ZodUndefined,\n CCM extends z.ZodTypeAny = z.ZodUndefined,\n MM extends z.ZodTypeAny = z.ZodUndefined,\n RTCM extends z.ZodTypeAny = z.ZodUndefined,\n TPCM extends z.ZodTypeAny = z.ZodUndefined,\n>(\n Role: R = PartialRoleEnum as unknown as R,\n TextContentMetadata: TCM = z.undefined() as TCM,\n ToolCallContentMetadata: CCM = z.undefined() as CCM,\n ReasoningContentMetadata: z.ZodTypeAny = z.undefined() as RTCM,\n MessageMetadata: MM = z.undefined() as MM,\n ToolResponseContentMetadata: TPCM = z.undefined() as TPCM\n) =>\n z.object({\n role: Role,\n partialContent: PartialContent(TextContentMetadata, ToolCallContentMetadata, ReasoningContentMetadata, ToolResponseContentMetadata),\n metadata: MessageMetadata,\n });\ntype PartialMessageType<\n R extends z.ZodEnum<[string, ...string[]]> = typeof PartialRoleEnum,\n TCM extends z.ZodTypeAny = z.ZodUndefined,\n CCM extends z.ZodTypeAny = z.ZodUndefined,\n MM extends z.ZodTypeAny = z.ZodUndefined,\n RTCM extends z.ZodTypeAny = z.ZodUndefined,\n TPCM extends z.ZodTypeAny = z.ZodUndefined,\n> = z.infer<ReturnType<typeof PartialMessage<R, TCM, CCM, MM, RTCM, TPCM>>>;\n\nexport { Message, PartialMessage, type MessageType, type PartialMessageType };\n","import { z } from \"zod\";\n\nimport { Message, PartialMessage } from \"./../message\";\n\nconst ChatUsage = z.object({\n promptTokens: z.number().nonnegative(),\n completionTokens: z.number().nonnegative(),\n totalTokens: z.number().nonnegative(),\n});\ntype ChatUsageType = z.infer<typeof ChatUsage>;\n\nconst ChatBaseLogProb = z.object({\n token: z.string(),\n logProb: z.number(),\n bytes: z.array(z.number().int()).nullable(),\n});\ntype ChatBaseLogProbType = z.infer<typeof ChatBaseLogProb>;\n\nconst ChatLogProb = ChatBaseLogProb.extend({\n topLogProbs: z.array(ChatBaseLogProb),\n});\ntype ChatLogProbType = z.infer<typeof ChatLogProb>;\n\nconst ChatLogProbs = z.array(ChatLogProb);\ntype ChatLogProbsType = z.infer<typeof ChatLogProbs>;\n\nconst ChatResponse = z.object({\n messages: z.array(Message()),\n usage: ChatUsage.optional(),\n logProbs: ChatLogProbs.optional(),\n});\ntype ChatResponseType = z.infer<typeof ChatResponse>;\n\nconst PartialChatUsage = z.object({\n promptTokens: z.number().nonnegative().optional(),\n completionTokens: z.number().nonnegative().optional(),\n totalTokens: z.number().nonnegative().optional(),\n});\n\ntype PartialChatUsageType = z.infer<typeof PartialChatUsage>;\n\nconst PartialChatResponse = z.object({\n partialMessages: z.array(PartialMessage()),\n usage: PartialChatUsage.optional(),\n logProbs: ChatLogProbs.optional(),\n});\ntype PartialChatResponseType = z.infer<typeof PartialChatResponse>;\n\nexport {\n ChatBaseLogProb,\n ChatLogProb,\n ChatLogProbs,\n ChatResponse,\n ChatUsage,\n PartialChatResponse,\n PartialChatUsage,\n type ChatBaseLogProbType,\n type ChatLogProbsType,\n type ChatLogProbType,\n type ChatResponseType,\n type ChatUsageType,\n type PartialChatResponseType,\n type PartialChatUsageType,\n};\n","import { z } from \"zod\";\n\nconst Config = <C extends z.ZodRecord<z.ZodString, z.ZodAny> = z.ZodRecord<z.ZodString, z.ZodAny>>(\n Config: C = z.record(z.string(), z.any()).optional() as unknown as C\n) => Config;\ntype ConfigType<C extends z.ZodRecord<z.ZodString, z.ZodAny> = z.ZodRecord<z.ZodString, z.ZodAny>> = z.infer<ReturnType<typeof Config<C>>>;\n\nexport { Config, type ConfigType };\n","import { z } from \"zod\";\n\nconst McpServerToolConfiguration = z.object({\n enabled: z.boolean().default(true),\n allowedTools: z.array(z.string().min(1)),\n});\ntype McpServerToolConfigurationType = z.infer<typeof McpServerToolConfiguration>;\n\nconst McpServer = z.object({\n type: z.literal(\"url\"),\n url: z\n .string()\n .url()\n .refine((url) => url.startsWith(\"https://\"), {\n message: \"MCP server URL must start with https://\",\n }),\n name: z.string().min(1),\n toolConfiguration: McpServerToolConfiguration.optional(),\n authorizationToken: z.string().min(1).optional(),\n});\ntype McpServerType = z.infer<typeof McpServer>;\n\nexport { McpServer, McpServerToolConfiguration, type McpServerToolConfigurationType, type McpServerType };\n","import { z } from \"zod\";\n\n// TODO: move to json schema 7 type and validator when implemented for tool types\nconst ResponseSchemaTypes = [\"object\", \"array\", \"number\", \"string\", \"boolean\", \"enum\"] as const;\nconst ResponseSchemaTypesLiteral = z.enum(ResponseSchemaTypes);\ntype ResponseSchemaTypesType = z.infer<typeof ResponseSchemaTypesLiteral>;\n\nconst ResponseSchemaProperty = z.object({\n anyOf: z.array(z.any()).optional(),\n type: z.union([ResponseSchemaTypesLiteral, z.array(z.union([ResponseSchemaTypesLiteral, z.literal(\"null\")]))]).optional(),\n default: z.any().optional(),\n title: z.string().optional(),\n description: z.string().max(4096).optional(),\n properties: z.record(z.any()).optional(),\n required: z.array(z.string()).optional(),\n minItems: z.number().int().min(0).optional(),\n maxItems: z.number().int().optional(),\n items: z.record(z.any()).optional(), // Recursive structure to handle nested arrays and objects\n enum: z.array(z.union([z.string(), z.number(), z.boolean(), z.null()])).optional(), // Enum for allowed values\n minimum: z.number().optional(), // Minimum value for number\n maximum: z.number().optional(), // Maximum value for number\n minLength: z.number().int().min(0).optional(), // Minimum length for string\n maxLength: z.number().int().optional(), // Maximum length for string\n $ref: z.string().optional(), // Reference to another schema\n});\ntype ResponseSchemaPropertyType = z.infer<typeof ResponseSchemaProperty>;\n\nconst ResponseSchemaStructure = z.object({\n type: z.enum([\"object\"]),\n required: z.array(z.string()),\n $defs: z.record(z.any()).optional(),\n properties: z.record(ResponseSchemaProperty),\n additionalProperties: z.literal(false),\n});\ntype ResponseSchemaStructureType = z.infer<typeof ResponseSchemaStructure>;\n\nconst ResponseSchema = z\n .object({\n name: z\n .string()\n .regex(/^[a-zA-Z0-9_]{1,64}$/)\n .max(64),\n description: z.string().max(4096),\n strict: z.boolean().optional(),\n schema: ResponseSchemaStructure,\n })\n .optional();\ntype ResponseSchemaType = z.infer<typeof ResponseSchema>;\n\nexport {\n ResponseSchema,\n ResponseSchemaProperty,\n ResponseSchemaStructure,\n ResponseSchemaTypes,\n ResponseSchemaTypesLiteral,\n type ResponseSchemaTypesType,\n type ResponseSchemaType,\n type ResponseSchemaPropertyType,\n type ResponseSchemaStructureType,\n};\n","import { z } from \"zod\";\n\nconst EmbeddingTextModalityLiteral = \"text\" as const;\nconst EmbeddingTokenModalityLiteral = \"token\" as const;\n\nconst EmbeddingModalityLiterals = [EmbeddingTextModalityLiteral, EmbeddingTokenModalityLiteral] as const;\nconst EmbeddingModalityEnum = z.enum(EmbeddingModalityLiterals);\ntype EmbeddingModalityEnumType = z.infer<typeof EmbeddingModalityEnum>;\n\nconst TextEmbeddingRequests = z.array(z.string().min(1));\ntype TextEmbeddingRequestsType = z.infer<typeof TextEmbeddingRequests>;\n\nconst TokenEmbeddingRequests = z.array(z.array(z.number().int().nonnegative()));\ntype TokenEmbeddingRequestsType = z.infer<typeof TokenEmbeddingRequests>;\n\nconst EmbeddingRequests = <M extends z.ZodTypeAny = z.ZodUndefined>(Metadata: M = z.undefined() as M) =>\n z.discriminatedUnion(\"modality\", [\n z.object({\n modality: z.literal(EmbeddingTextModalityLiteral),\n metadata: Metadata,\n requests: TextEmbeddingRequests,\n }),\n z.object({\n modality: z.literal(EmbeddingTokenModalityLiteral),\n metadata: Metadata,\n requests: TokenEmbeddingRequests,\n }),\n ]);\ntype EmbeddingRequestsType<M extends z.ZodTypeAny = z.ZodUndefined> = z.infer<ReturnType<typeof EmbeddingRequests<M>>>;\n\nexport {\n EmbeddingTextModalityLiteral,\n EmbeddingTokenModalityLiteral,\n EmbeddingModalityLiterals,\n EmbeddingModalityEnum,\n TextEmbeddingRequests,\n TokenEmbeddingRequests,\n EmbeddingRequests,\n type EmbeddingRequestsType,\n type EmbeddingModalityEnumType,\n type TextEmbeddingRequestsType,\n type TokenEmbeddingRequestsType,\n};\n","import { z } from \"zod\";\n\nconst FloatEmbeddingLiteral = \"float\" as const;\nconst FloatEmbedding = z.object({\n index: z.number().int().nonnegative(),\n embedding: z.array(z.number()),\n});\ntype FloatEmbeddingType = z.infer<typeof FloatEmbedding>;\n\nconst Base64EmbeddingLiteral = \"base64\" as const;\nconst Base64Embedding = z.object({\n index: z.number().int().nonnegative(),\n embedding: z.string().base64(),\n});\ntype Base64EmbeddingType = z.infer<typeof Base64Embedding>;\n\nconst EmbeddingsUsage = z.object({\n totalTokens: z.number().int().nonnegative(),\n});\ntype EmbeddingsUsageType = z.infer<typeof EmbeddingsUsage>;\n\nconst EmbeddingResponse = z.discriminatedUnion(\"encodingFormat\", [\n z.object({\n encodingFormat: z.literal(FloatEmbeddingLiteral),\n embeddings: z.array(FloatEmbedding),\n usage: EmbeddingsUsage.optional(),\n }),\n z.object({\n encodingFormat: z.literal(Base64EmbeddingLiteral),\n embeddings: z.array(Base64Embedding),\n usage: EmbeddingsUsage.optional(),\n }),\n]);\ntype EmbeddingResponseType = z.infer<typeof EmbeddingResponse>;\n\nexport {\n FloatEmbeddingLiteral,\n Base64EmbeddingLiteral,\n FloatEmbedding,\n Base64Embedding,\n EmbeddingsUsage,\n EmbeddingResponse,\n type FloatEmbeddingType,\n type Base64EmbeddingType,\n type EmbeddingsUsageType,\n type EmbeddingResponseType,\n};\n","const safeStringify = (obj: unknown) => {\n const seen = new WeakSet();\n return JSON.stringify(obj, (key, value) => {\n if (typeof value === \"object\" && value !== null) {\n if (seen.has(value)) {\n return; // Skip circular reference\n }\n seen.add(value);\n }\n return value;\n });\n};\n\nconst getErrorMessage = (error: unknown | undefined): string => {\n if (error == null) return \"unknown error\";\n if (typeof error === \"string\") return error;\n if (error instanceof Error) return error.message;\n return safeStringify(error);\n};\n\nconst GatewayBaseErrorLiteral = \"GatewayBaseError\" as const;\nclass GatewayBaseError extends Error {\n readonly name: string = GatewayBaseErrorLiteral;\n readonly info: string;\n readonly cause: unknown;\n\n constructor({ info, cause }: { info: string; cause: unknown }, name?: string) {\n super(`[${name ?? GatewayBaseErrorLiteral}]: ${info}\\nMessage: ${getErrorMessage(cause)}`);\n this.info = info;\n this.cause = cause;\n this.name = name ?? GatewayBaseErrorLiteral;\n Object.setPrototypeOf(this, new.target.prototype);\n }\n\n static isGatewayBaseError(error: unknown): error is GatewayBaseError {\n return error instanceof GatewayBaseError;\n }\n\n toJSON(): object {\n return {\n name: this.name,\n info: this.info,\n cause: this.cause,\n message: this.message,\n stack: this.stack,\n };\n }\n}\n\nexport { GatewayBaseError };\n","import { z } from \"zod\";\n\n/**\n * A pair of per‑million‑token rates for a single price category (e.g., base input/output).\n * Represents the input and output cost for 1 million tokens within a specific category (like 'base') of a pricing tier.\n */\nconst ChatModelTokenPairPrice = z\n .object({\n inputPricePerMillion: z.number().nonnegative().describe(\"Price per 1M input tokens\"),\n outputPricePerMillion: z.number().nonnegative().describe(\"Price per 1M output tokens\"),\n })\n .describe(\"Input/output price pair (per 1M tokens) for a specific category within a ChatModel pricing tier.\");\n\ntype ChatModelTokenPairPriceType = z.infer<typeof ChatModelTokenPairPrice>;\n\n/**\n * Defines the price categories (e.g., base) applicable within a single pricing tier (`ChatModelTokenRangePrice`).\n * Each category holds a `ChatModelTokenPairPrice`.\n */\nconst ChatModelTokenTypePrice = z\n .object({\n base: ChatModelTokenPairPrice.describe(\"Base (uncached, non‑reasoning) rates\"),\n // Add optional 'cached' and 'reasoning' here if they become standard\n })\n .describe(\"Holds the `ChatModelTokenPairPrice` for different categories (e.g., base) within a single pricing tier.\");\n\ntype ChatModelTokenTypePriceType = z.infer<typeof ChatModelTokenTypePrice>;\n\n/**\n * Defines a single tier in a model's pricing schedule (`ChatModelPrice`), based on token count range.\n * - `minTokens`: inclusive lower bound (integer ≥ 0).\n * - `maxTokens`: exclusive upper bound (integer > minTokens), or `null` for ∞.\n * - `prices`: the `ChatModelTokenTypePrice` (categories and their rates) applicable to this tier.\n */\nconst ChatModelTokenRangePrice = z\n .object({\n minTokens: z.number().int().nonnegative().describe(\"Inclusive lower token bound for this tier.\"),\n maxTokens: z.number().int().nullable().optional().describe(\"Exclusive upper token bound; `null` means ∞.\"),\n prices: ChatModelTokenTypePrice.describe(\"Price categories and rates for this specific token range.\"),\n })\n .refine((t) => t.maxTokens === null || (typeof t.maxTokens === \"number\" && t.maxTokens > t.minTokens), {\n message: \"maxTokens must be > minTokens (or null for infinite).\",\n path: [\"maxTokens\"],\n })\n .describe(\"A single pricing tier defined by a token range and associated prices.\");\n\ntype ChatModelTokenRangePriceType = z.infer<typeof ChatModelTokenRangePrice>;\n\n/**\n * Full pricing schedule for a specific chat model, potentially with multiple `ChatModelTokenRangePrice` tiers.\n * Ensures tiers are contiguous and cover the full range from 0 to infinity.\n * - First tier must start at 0 tokens.\n * - `tokenRanges` must be contiguous: each tier.minTokens === previous.maxTokens.\n * - Last `tokenRange` must have maxTokens = null (infinite).\n */\nconst ChatModelPrice = z\n .object({\n modelName: z.string().describe(\"Model name this schedule applies to.\"),\n currency: z.string().default(\"USD\").describe(\"Currency code (e.g., USD).\"),\n tokenRanges: z\n .array(ChatModelTokenRangePrice)\n .min(1)\n .describe(\"Pricing tiers (`ChatModelTokenRangePrice`) schedule, sorted by minTokens.\"),\n })\n .superRefine((data, ctx) => {\n const { tokenRanges } = data;\n\n // 1) First tier starts at 0\n if (tokenRanges[0].minTokens !== 0) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n path: [\"tokenRanges\", 0, \"minTokens\"],\n message: \"The first tier must have minTokens = 0.\",\n });\n }\n\n // 2) tokenRanges must be sorted and contiguous\n for (let i = 1; i < tokenRanges.length; i++) {\n const prev = tokenRanges[i - 1];\n const curr = tokenRanges[i];\n\n if (prev.maxTokens === null) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n path: [\"tokenRanges\", i - 1, \"maxTokens\"],\n message: \"Cannot define any tokenRanges after an infinite tier (maxTokens = null).\",\n });\n break; // Stop further checks if structure is already invalid\n }\n\n if (curr.minTokens !== prev.maxTokens) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n path: [\"tokenRanges\", i, \"minTokens\"],\n message: `Tier ${i} minTokens (${curr.minTokens}) must equal previous tier's maxTokens (${prev.maxTokens}) for contiguity.`,\n });\n }\n\n // Ensure sorting (although contiguity check often implies this)\n if (curr.minTokens < prev.minTokens) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n path: [\"tokenRanges\", i, \"minTokens\"],\n message: `tokenRanges must be sorted by ascending minTokens. Tier ${i} (${curr.minTokens}) starts before Tier ${i - 1} (${prev.minTokens}).`,\n });\n }\n }\n\n // 3) Last tier must be infinite\n const last = tokenRanges[tokenRanges.length - 1];\n // Check last.maxTokens only if the loop didn't break early due to a previous infinite tier\n if (tokenRanges.every((t) => t.maxTokens !== null || t === last) && last.maxTokens !== null) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n path: [\"tokenRanges\", tokenRanges.length - 1, \"maxTokens\"],\n message: \"The final tier must have maxTokens = null (representing infinity).\",\n });\n }\n })\n .describe(\"Complete pricing schedule for a single chat model, including all its token-based tiers.\");\n\ntype ChatModelPriceType = z.infer<typeof ChatModelPrice>;\n\n// Export the schemas and types\nexport { ChatModelPrice, ChatModelTokenPairPrice, ChatModelTokenRangePrice, ChatModelTokenTypePrice };\nexport type { ChatModelPriceType, ChatModelTokenPairPriceType, ChatModelTokenRangePriceType, ChatModelTokenTypePriceType };\n","import { z } from \"zod\";\n\nconst FunctionToolLiteral = \"function\" as const;\n\nconst FunctionParameterTypes = [\"object\", \"array\", \"number\", \"string\", \"boolean\", \"null\"];\nconst FunctionParameterTypesLiteral = z.enum([\"object\", \"array\", \"number\", \"string\", \"boolean\", \"null\"]);\ntype FunctionParameterTypesType = z.infer<typeof FunctionParameterTypesLiteral>;\n\nconst FunctionParameter = z.object({\n anyOf: z.array(z.any()).optional(),\n type: FunctionParameterTypesLiteral.optional(),\n default: z.any().optional(),\n title: z.string().optional(),\n description: z.string().max(4096).optional(),\n properties: z.record(z.any()).optional(),\n required: z.array(z.string()).optional(),\n minItems: z.number().int().min(0).optional(),\n maxItems: z.number().int().optional(),\n items: z.record(z.any()).optional(), // Recursive structure to handle nested arrays and objects\n enum: z.array(z.union([z.string(), z.number(), z.boolean(), z.null()])).optional(), // Enum for allowed values\n minimum: z.number().optional(), // Minimum value for number\n maximum: z.number().optional(), // Maximum value for number\n minLength: z.number().int().min(0).optional(), // Minimum length for string\n maxLength: z.number().int().optional(), // Maximum length for string\n});\ntype FunctionParameterType = z.infer<typeof FunctionParameter>;\n\nconst FunctionParameters = z.object({\n type: z.enum([\"object\"]),\n title: z.string().optional(),\n $defs: z.record(z.any()).optional(),\n properties: z.record(FunctionParameter).optional(),\n required: z.array(z.string()).optional(),\n});\ntype FunctionParametersType = z.infer<typeof FunctionParameters>;\n\nconst Function = z.object({\n name: z\n .string()\n .regex(/^[a-zA-Z0-9_]{1,64}$/)\n .max(64),\n description: z.string().max(4096),\n parameters: z.any(),\n strict: z.boolean().optional(),\n});\ntype FunctionType = z.infer<typeof Function>;\n\nconst ToolTypes = [\"function\"];\nconst ToolTypesLiteral = z.enum([\"function\"]);\ntype ToolTypesType = z.infer<typeof ToolTypesLiteral>;\n\nconst FunctionRequestRetry = z.object({\n maxAttempts: z.number().int().positive(),\n initialDelay: z.number().int().positive(),\n exponentialFactor: z.number().int().positive(),\n});\n\nconst FunctionRequestHttp = z.object({\n type: z.literal(\"http\"),\n method: z.enum([\"get\", \"post\"]),\n url: z.string().url(),\n headers: z.record(z.string()).optional(),\n query: z.record(z.string()).optional(),\n body: z.record(z.any()).optional(),\n proxyUrl: z.string().url().optional(),\n proxyHeaders: z.record(z.string()).optional(),\n retry: FunctionRequestRetry.optional(),\n});\n\nconst FunctionRequest = z.discriminatedUnion(\"type\", [FunctionRequestHttp]);\n\nconst FunctionTool = z.object({\n type: ToolTypesLiteral,\n definition: z.object({\n schema: Function,\n }),\n request: FunctionRequest.optional(),\n});\ntype FunctionToolType = z.infer<typeof FunctionTool>;\n\nexport {\n Function,\n FunctionParameter,\n FunctionParameters,\n FunctionParameterTypes,\n FunctionParameterTypesLiteral,\n FunctionRequestHttp,\n FunctionRequest,\n FunctionRequestRetry,\n ToolTypes,\n ToolTypesLiteral,\n type FunctionParametersType,\n type FunctionParameterType,\n type FunctionParameterTypesType,\n type FunctionType,\n type ToolTypesType,\n};\n\nexport { FunctionTool, FunctionToolLiteral, type FunctionToolType };\n","import { z } from \"zod\";\n\nimport { FunctionTool, FunctionToolLiteral } from \"./function-tool\";\n\nconst ToolLiterals = [FunctionToolLiteral] as const;\nconst ToolEnum = z.enum(ToolLiterals);\ntype ToolEnumType = z.infer<typeof ToolEnum>;\n\nconst Tool = <FTM extends z.ZodTypeAny>(FunctionToolMetadata: FTM = z.undefined() as FTM) =>\n z.discriminatedUnion(\"type\", [FunctionTool.extend({ metadata: FunctionToolMetadata })]);\ntype ToolType<FTM extends z.ZodTypeAny = z.ZodUndefined> = z.infer<ReturnType<typeof Tool<FTM>>>;\n\nexport { Tool, ToolEnum, ToolLiterals, type ToolEnumType, type ToolType };\n","import {\n Base64ImageContentTypeLiteral,\n ContentType,\n ImageContent,\n ImageContentDetailsLiteralType,\n ImageModalityLiteral,\n Message,\n MessageType,\n PartialMessage,\n PartialMessageType,\n PartialReasoningContent,\n PartialReasoningModalityLiteral,\n PartialTextContent,\n PartialTextModalityLiteral,\n PartialToolCallContent,\n PartialToolCallModalityLiteral,\n PartialToolResponseContent,\n PartialToolResponseModalityLiteral,\n ReasoningContent,\n ReasoningContentTypeLiteral,\n ReasoningModalityLiteral,\n RedactedReasoningContentTypeLiteral,\n RoleEnumType,\n TextContent,\n TextModalityLiteral,\n ToolCallContent,\n ToolCallModalityLiteral,\n ToolResponseContent,\n ToolResponseModalityLiteral,\n UrlImageContentTypeLiteral,\n} from \"./../message\";\n\nconst createTextContent = (content: string): ContentType => {\n return TextContent().parse({\n modality: TextModalityLiteral,\n value: content,\n });\n};\n\nconst createToolCallContent = (index: number, id: string, name: string, args: string, serverName?: string): ContentType => {\n return ToolCallContent().parse({\n modality: ToolCallModalityLiteral,\n index: index,\n id: id,\n name: name,\n arguments: args,\n serverName: serverName,\n });\n};\n\nconst createToolResponseContent = (\n index: number,\n id: string,\n name: string,\n data: string,\n apiResponse?: { statusCode: number },\n metadata?: any\n): ContentType => {\n return ToolResponseContent().parse({\n modality: ToolResponseModalityLiteral,\n index: index,\n id: id,\n name: name,\n data: data,\n apiResponse: apiResponse,\n metadata: metadata,\n });\n};\n\nconst createTextMessage = (role: RoleEnumType, content: string): MessageType => {\n return Message().parse({\n role: role,\n content: [\n TextContent().parse({\n modality: TextModalityLiteral,\n value: content,\n }),\n ],\n });\n};\n\nconst createUrlImageMessage = (role: RoleEnumType, url: string, detail: ImageContentDetailsLiteralType): MessageType => {\n return Message().parse({\n role: role,\n content: [\n ImageContent().parse({\n modality: ImageModalityLiteral,\n detail: detail,\n value: {\n type: UrlImageContentTypeLiteral,\n url: url,\n },\n }),\n ],\n });\n};\n\nconst createBase64ImageMessage = (role: RoleEnumType, base64: string, detail: ImageContentDetailsLiteralType): MessageType => {\n return Message().parse({\n role: role,\n content: [\n ImageContent().parse({\n modality: ImageModalityLiteral,\n detail: detail,\n value: {\n type: Base64ImageContentTypeLiteral,\n base64: base64,\n },\n }),\n ],\n });\n};\n\nconst createToolCallMessage = (role: RoleEnumType, index: number, id: string, name: string, args: string): MessageType => {\n return Message().parse({\n role: role,\n content: [\n ToolCallContent().parse({\n modality: ToolCallModalityLiteral,\n index: index,\n id: id,\n name: name,\n arguments: args,\n }),\n ],\n });\n};\n\nconst createToolResponseMessage = (role: RoleEnumType, index: number, id: string, name: string, data: string): MessageType => {\n return Message().parse({\n role: role,\n content: [\n ToolResponseContent().parse({\n modality: ToolResponseModalityLiteral,\n index: index,\n id: id,\n name: name,\n data: data,\n }),\n ],\n });\n};\n\nconst createPartialTextMessage = (role: RoleEnumType, content: string): PartialMessageType => {\n return PartialMessage().parse({\n role: role,\n partialContent: PartialTextContent().parse({\n modality: PartialTextModalityLiteral,\n value: content,\n }),\n });\n};\n\nconst createPartialToolCallMessage = (\n role: RoleEnumType,\n index: number,\n id?: string,\n name?: string,\n args?: string,\n serverName?: string\n): PartialMessageType => {\n return PartialMessage().parse({\n role: role,\n partialContent: PartialToolCallContent().parse({\n modality: PartialToolCallModalityLiteral,\n index: index,\n id: id,\n name: name,\n arguments: args,\n serverName: serverName,\n }),\n });\n};\n\nconst createPartialToolResponseMessage = (\n role: RoleEnumType,\n index: number,\n id: string,\n name: string,\n data: string\n): PartialMessageType => {\n return PartialMessage().parse({\n role: role,\n partialContent: PartialToolResponseContent().parse({\n modality: PartialToolResponseModalityLiteral,\n index: index,\n id: id,\n name: name,\n data: data,\n }),\n });\n};\nconst createReasoningContent = (thinking: string, signature: string): ContentType => {\n return ReasoningContent().parse({\n modality: ReasoningModalityLiteral,\n value: {\n type: ReasoningContentTypeLiteral,\n thinking,\n signature,\n },\n });\n};\n\nconst createReasoningMessage = (role: RoleEnumType, thinking: string, signature: string): MessageType => {\n return Message().parse({\n role: role,\n content: [\n ReasoningContent().parse({\n modality: ReasoningModalityLiteral,\n value: {\n type: ReasoningContentTypeLiteral,\n thinking,\n signature,\n },\n }),\n ],\n });\n};\n// Redacted Reasoning Content\nconst createRedactedReasoningContent = (data: string): ContentType => {\n return ReasoningContent().parse({\n modality: ReasoningModalityLiteral,\n value: {\n type: RedactedReasoningContentTypeLiteral,\n data,\n },\n });\n};\n\nconst createRedactedReasoningMessage = (role: RoleEnumType, data: string): MessageType => {\n return Message().parse({\n role: role,\n content: [\n ReasoningContent().parse({\n modality: ReasoningModalityLiteral,\n value: {\n type: RedactedReasoningContentTypeLiteral,\n data,\n },\n }),\n ],\n });\n};\n\nconst createPartialReasoningMessage = (role: RoleEnumType, thinking?: string, signature?: string): PartialMessageType => {\n return PartialMessage().parse({\n role: role,\n partialContent: PartialReasoningContent().parse({\n modality: PartialReasoningModalityLiteral,\n value: {\n type: ReasoningContentTypeLiteral,\n thinking,\n signature,\n },\n // metadata is optional; omit or provide if needed\n }),\n });\n};\n\n// Create a partial redacted reasoning message\nconst createPartialRedactedReasoningMessage = (role: RoleEnumType, data: string): PartialMessageType => {\n return PartialMessage().parse({\n role: role,\n partialContent: PartialReasoningContent().parse({\n modality: PartialReasoningModalityLiteral,\n value: {\n type: RedactedReasoningContentTypeLiteral,\n data,\n },\n // metadata is optional; omit or provide if needed\n }),\n });\n};\n\nexport {\n createBase64ImageMessage,\n createPartialReasoningMessage,\n createPartialRedactedReasoningMessage,\n createPartialTextMessage,\n createPartialToolCallMessage,\n createPartialToolResponseMessage,\n createReasoningContent,\n createReasoningMessage,\n createRedactedReasoningContent,\n createRedactedReasoningMessage,\n createTextContent,\n createTextMessage,\n createToolCallContent,\n createToolCallMessage,\n createToolResponseContent,\n createToolResponseMessage,\n createUrlImageMessage,\n};\n","import { GatewayBaseError } from \"@adaline/types\";\n\nconst ProviderErrorLiteral = \"ProviderError\" as const;\nexport class ProviderError extends GatewayBaseError {\n readonly name = ProviderErrorLiteral;\n readonly info: string;\n readonly cause: unknown;\n\n constructor({ info, cause }: { info: string; cause: unknown }) {\n super({ info, cause }, ProviderErrorLiteral);\n this.info = info;\n this.cause = cause;\n }\n\n static isProviderError(error: unknown): error is ProviderError {\n return error instanceof ProviderError;\n }\n}\n","import { GatewayBaseError } from \"@adaline/types\";\n\nconst ModelResponseErrorLiteral = \"ModelResponseError\" as const;\nexport class ModelResponseError extends GatewayBaseError {\n readonly name = ModelResponseErrorLiteral;\n readonly info: string;\n readonly cause: unknown;\n\n constructor({ info, cause }: { info: string; cause: unknown }) {\n super({ info, cause }, ModelResponseErrorLiteral);\n this.cause = cause;\n this.info = info;\n }\n\n static isModelResponseError(error: unknown): error is ModelResponseError {\n return error instanceof ModelResponseError;\n }\n}\n","import { GatewayBaseError } from \"@adaline/types\";\n\nconst InvalidModelRequestErrorLiteral = \"InvalidModelRequestError\" as const;\nexport class InvalidModelRequestError extends GatewayBaseError {\n readonly name = InvalidModelRequestErrorLiteral;\n readonly info: string;\n readonly cause: unknown;\n\n constructor({ info, cause }: { info: string; cause: unknown }) {\n super({ info, cause }, InvalidModelRequestErrorLiteral);\n this.cause = cause;\n this.info = info;\n Object.setPrototypeOf(this, new.target.prototype);\n }\n\n static isInvalidModelRequestError(error: unknown): error is InvalidModelRequestError {\n return error instanceof InvalidModelRequestError;\n }\n}\n","import { GatewayBaseError } from \"@adaline/types\";\n\nconst InvalidConfigErrorLiteral = \"InvalidConfigError\" as const;\nexport class InvalidConfigError extends GatewayBaseError {\n readonly name = InvalidConfigErrorLiteral;\n readonly info: string;\n readonly cause: unknown;\n\n constructor({ info, cause }: { info: string; cause: unknown }) {\n super({ info, cause }, InvalidConfigErrorLiteral);\n this.cause = cause;\n this.info = info;\n Object.setPrototypeOf(this, new.target.prototype);\n }\n\n static isInvalidConfigError(error: unknown): error is InvalidConfigError {\n return error instanceof InvalidConfigError;\n }\n}\n","import { GatewayBaseError } from \"@adaline/types\";\n\nconst InvalidMessagesErrorLiteral = \"InvalidMessagesError\" as const;\nexport class InvalidMessagesError extends GatewayBaseError {\n readonly name = InvalidMessagesErrorLiteral;\n readonly info: string;\n readonly cause: unknown;\n\n constructor({ info, cause }: { info: string; cause: unknown }) {\n super({ info, cause }, InvalidMessagesErrorLiteral);\n this.cause = cause;\n this.info = info;\n Object.setPrototypeOf(this, new.target.prototype);\n }\n\n static isInvalidMessagesError(error: unknown): error is InvalidMessagesError {\n return error instanceof InvalidMessagesError;\n }\n}\n","import { GatewayBaseError } from \"@adaline/types\";\n\nconst InvalidToolsErrorLiteral = \"InvalidToolsError\" as const;\nexport class InvalidToolsError extends GatewayBaseError {\n readonly name = InvalidToolsErrorLiteral;\n readonly info: string;\n readonly cause: unknown;\n\n constructor({ info, cause }: { info: string; cause: unknown }) {\n super({ info, cause }, InvalidToolsErrorLiteral);\n this.cause = cause;\n this.info = info;\n Object.setPrototypeOf(this, new.target.prototype);\n }\n\n static isInvalidToolsError(error: unknown): error is InvalidToolsError {\n return error instanceof InvalidToolsError;\n }\n}\n","import { z } from \"zod\";\n\nconst MultiStringConfigItemTypeLiteral = \"multi-string\" as const;\n\nconst MultiStringConfigItemDef = z.object({\n type: z.literal(MultiStringConfigItemTypeLiteral),\n param: z.string().min(1),\n title: z.string().min(1),\n description: z.string().min(1).max(500),\n max: z.number().int().positive(),\n});\ntype MultiStringConfigItemType = z.infer<typeof MultiStringConfigItemDef>;\n\nconst MultiStringConfigItemSchema = (max: number) => z.array(z.string()).max(max).default([]).optional();\ntype MultiStringConfigItemSchemaType = z.infer<ReturnType<typeof MultiStringConfigItemSchema>>;\n\nconst MultiStringConfigItem = (data: Omit<MultiStringConfigItemType, \"type\">) => {\n return {\n def: MultiStringConfigItemDef.parse({\n type: MultiStringConfigItemTypeLiteral,\n ...data,\n }),\n schema: MultiStringConfigItemSchema(data.max),\n };\n};\n\nexport {\n MultiStringConfigItem,\n MultiStringConfigItemDef,\n MultiStringConfigItemSchema,\n MultiStringConfigItemTypeLiteral,\n type MultiStringConfigItemSchemaType,\n type MultiStringConfigItemType,\n};\n","import { z } from \"zod\";\n\nconst ObjectSchemaConfigItemTypeLiteral = \"object-schema\" as const;\n\nconst ObjectSchemaConfigItemDef = z.object({\n type: z.literal(ObjectSchemaConfigItemTypeLiteral),\n param: z.string().min(1),\n title: z.string().min(1),\n description: z.string().min(1).max(500),\n objectSchema: z.any(),\n});\ntype ObjectSchemaConfigItemType = z.infer<typeof ObjectSchemaConfigItemDef>;\n\nconst ObjectSchemaConfigItemSchema = <S extends z.ZodRawShape>(schema: z.ZodObject<S>) => schema.optional();\ntype ObjectSchemaConfigItemSchemaType<S extends z.ZodRawShape = z.ZodRawShape> = z.infer<\n ReturnType<typeof ObjectSchemaConfigItemSchema<S>>\n>;\n\nconst ObjectSchemaConfigItem = (data: Omit<ObjectSchemaConfigItemType, \"type\">) => {\n return {\n def: ObjectSchemaConfigItemDef.parse({\n type: ObjectSchemaConfigItemTypeLiteral,\n ...data,\n }),\n schema: ObjectSchemaConfigItemSchema(data.objectSchema),\n };\n};\n\nexport {\n ObjectSchemaConfigItem,\n ObjectSchemaConfigItemDef,\n ObjectSchemaConfigItemSchema,\n ObjectSchemaConfigItemTypeLiteral,\n type ObjectSchemaConfigItemType,\n type ObjectSchemaConfigItemSchemaType,\n};\n","import { z } from \"zod\";\n\nconst PairedSelectConfigItemTypeLiteral = \"paired-select\" as const;\n\nconst PairedSelectChoice = z.object({\n value: z.string().min(1),\n label: z.string().min(1),\n});\ntype PairedSelectChoiceType = z.infer<typeof PairedSelectChoice>;\n\nconst PairedSelectFieldDef = z.object({\n key: z.string().min(1),\n label: z.string().min(1),\n description: z.string().min(1).max(500).optional(),\n choices: z.array(PairedSelectChoice).min(1),\n});\ntype PairedSelectFieldDefType = z.infer<typeof PairedSelectFieldDef>;\n\nconst PairedSelectConfigItemDef = z.object({\n type: z.literal(PairedSelectConfigItemTypeLiteral),\n param: z.string().min(1),\n title: z.string().min(1),\n description: z.string().min(1).max(500),\n fields: z.tuple([PairedSelectFieldDef, PairedSelectFieldDef]),\n uniqueByField: z.string().min(1).optional(),\n});\ntype PairedSelectConfigItemType = z.infer<typeof PairedSelectConfigItemDef>;\n\nconst createFieldEnum = (choices: PairedSelectChoiceType[]) => {\n const values = choices.map((choice) => choice.value);\n if (values.length === 0) {\n throw new Error(\"PairedSelectConfigItem fields must define at least one choice\");\n }\n const [first, ...rest] = values as [string, ...string[]];\n return z.enum([first, ...rest]);\n};\n\nconst PairedSelectConfigItemSchema = (fields: readonly [PairedSelectFieldDefType, PairedSelectFieldDefType]) => {\n const shape = fields.reduce<z.ZodRawShape>((acc, field) => {\n acc[field.key] = createFieldEnum(field.choices);\n return acc;\n }, {});\n return z.array(z.object(shape)).optional();\n};\ntype PairedSelectConfigItemSchemaType = z.infer<ReturnType<typeof PairedSelectConfigItemSchema>>;\n\nconst PairedSelectConfigItem = (data: Omit<PairedSelectConfigItemType, \"type\">) => {\n const parsed = PairedSelectConfigItemDef.parse({\n type: PairedSelectConfigItemTypeLiteral,\n ...data,\n });\n\n const fieldKeys = new Set(parsed.fields.map((field) => field.key));\n if (fieldKeys.size !== parsed.fields.length) {\n throw new Error(\"PairedSelectConfigItem fields must have unique keys\");\n }\n\n if (parsed.uniqueByField && !fieldKeys.has(parsed.uniqueByField)) {\n throw new Error(\"uniqueByField must reference one of the defined field keys\");\n }\n\n return {\n def: parsed,\n schema: PairedSelectConfigItemSchema(parsed.fields),\n };\n};\n\nexport {\n PairedSelectChoice,\n PairedSelectConfigItem,\n PairedSelectConfigItemDef,\n PairedSelectConfigItemSchema,\n PairedSelectConfigItemTypeLiteral,\n PairedSelectFieldDef,\n type PairedSelectChoiceType,\n type PairedSelectConfigItemSchemaType,\n type PairedSelectConfigItemType,\n type PairedSelectFieldDefType,\n};\n","import { z } from \"zod\";\n\nconst RangeConfigItemTypeLiteral = \"range\" as const;\n\nconst RangeConfigItemDef = z.object({\n type: z.literal(RangeConfigItemTypeLiteral),\n param: z.string().min(1),\n title: z.string().min(1),\n description: z.string().min(1).max(500),\n min: z.number().int(),\n max: z.number().int(),\n step: z.number().positive(),\n default: z.number(),\n});\ntype RangeConfigItemDefType = z.infer<typeof RangeConfigItemDef>;\n\nconst RangeConfigItemSchema = (min: number, max: number, step: number, defaultValue: number) =>\n z.number().min(min).max(max).step(step).default(defaultValue).optional();\ntype RangeConfigItemSchemaType = z.infer<ReturnType<typeof RangeConfigItemSchema>>;\n\nconst RangeConfigItem = (data: Omit<RangeConfigItemDefType, \"type\">) => {\n return {\n def: RangeConfigItemDef.parse({\n type: RangeConfigItemTypeLiteral,\n ...data,\n }),\n schema: RangeConfigItemSchema(data.min, data.max, data.step, data.default),\n };\n};\n\nexport {\n RangeConfigItem,\n RangeConfigItemDef,\n RangeConfigItemSchema,\n RangeConfigItemTypeLiteral,\n type RangeConfigItemDefType,\n type RangeConfigItemSchemaType,\n};\n","import { z } from \"zod\";\n\nconst SelectBooleanConfigItemTypeLiteral = \"select-boolean\" as const;\n\nconst SelectBooleanConfigItemDef = z.object({\n type: z.literal(SelectBooleanConfigItemTypeLiteral),\n param: z.string().min(1),\n title: z.string().min(1),\n description: z.string().min(1).max(500),\n default: z.boolean().nullable(),\n});\ntype SelectBooleanConfigItemDefType = z.infer<typeof SelectBooleanConfigItemDef>;\n\nconst SelectBooleanConfigItemSchema = (defaultValue: boolean | null) => z.boolean().nullable().default(defaultValue).optional();\ntype SelectBooleanConfigItemSchemaType = z.infer<ReturnType<typeof SelectBooleanConfigItemSchema>>;\n\nconst SelectBooleanConfigItem = (data: Omit<SelectBooleanConfigItemDefType, \"type\">) => {\n return {\n def: SelectBooleanConfigItemDef.parse({\n type: SelectBooleanConfigItemTypeLiteral,\n ...data,\n }),\n schema: SelectBooleanConfigItemSchema(data.default),\n };\n};\n\nexport {\n SelectBooleanConfigItem,\n SelectBooleanConfigItemDef,\n SelectBooleanConfigItemSchema,\n SelectBooleanConfigItemTypeLiteral,\n type SelectBooleanConfigItemDefType,\n type SelectBooleanConfigItemSchemaType,\n};\n","import { z } from \"zod\";\n\nconst SelectStringConfigItemTypeLiteral = \"select-string\" as const;\n\nconst SelectStringConfigItemDef = z.object({\n type: z.literal(SelectStringConfigItemTypeLiteral),\n param: z.string().min(1),\n title: z.string().min(1),\n description: z.string().min(1).max(500),\n default: z.string(),\n choices: z.array(z.string()),\n});\ntype SelectStringConfigItemDefType = z.infer<typeof SelectStringConfigItemDef>;\n\nconst SelectStringConfigItemSchema = (defaultValue: string | null, choices: string[]) =>\n z\n .enum(choices as [string, ...string[]])\n .nullable()\n .default(defaultValue)\n .optional();\ntype SelectStringConfigItemSchemaType = z.infer<ReturnType<typeof SelectStringConfigItemSchema>>;\n\nconst SelectStringConfigItem = (data: Omit<SelectStringConfigItemDefType, \"type\">) => {\n return {\n def: SelectStringConfigItemDef.parse({\n type: SelectStringConfigItemTypeLiteral,\n ...data,\n }),\n schema: SelectStringConfigItemSchema(data.default, data.choices),\n };\n};\n\nexport {\n SelectStringConfigItem,\n SelectStringConfigItemDef,\n SelectStringConfigItemSchema,\n SelectStringConfigItemTypeLiteral,\n type SelectStringConfigItemDefType,\n type SelectStringConfigItemSchemaType,\n};\n","import { z } from \"zod\";\n\nimport { MultiStringConfigItemDef, MultiStringConfigItemTypeLiteral } from \"./multi-string-config-item\";\nimport { ObjectSchemaConfigItemDef, ObjectSchemaConfigItemTypeLiteral } from \"./object-schema-config-item\";\nimport { PairedSelectConfigItemDef, PairedSelectConfigItemTypeLiteral } from \"./paired-select-config-item\";\nimport { RangeConfigItemDef, RangeConfigItemTypeLiteral } from \"./range-config-item\";\nimport { SelectBooleanConfigItemDef, SelectBooleanConfigItemTypeLiteral } from \"./select-boolean-config-item\";\nimport { SelectStringConfigItemDef, SelectStringConfigItemTypeLiteral } from \"./select-string-config-item\";\n\nconst ConfigItemLiterals = [\n RangeConfigItemTypeLiteral,\n MultiStringConfigItemTypeLiteral,\n SelectStringConfigItemTypeLiteral,\n ObjectSchemaConfigItemTypeLiteral,\n SelectBooleanConfigItemTypeLiteral,\n PairedSelectConfigItemTypeLiteral,\n] as const;\nconst ConfigItemEnum = z.enum(ConfigItemLiterals);\ntype ConfigItemEnumType = z.infer<typeof ConfigItemEnum>;\n\nconst ConfigItemDef = z.discriminatedUnion(\"type\", [\n RangeConfigItemDef,\n MultiStringConfigItemDef,\n SelectStringConfigItemDef,\n SelectBooleanConfigItemDef,\n ObjectSchemaConfigItemDef,\n PairedSelectConfigItemDef,\n]);\ntype ConfigItemDefType = z.infer<typeof ConfigItemDef>;\n\nexport { ConfigItemDef, ConfigItemEnum, ConfigItemLiterals, type ConfigItemDefType, type ConfigItemEnumType };\n","import { z } from \"zod\";\n\nimport { ChatModelPriceType, ModalityEnum, RoleEnum } from \"@adaline/types\";\n\nimport { ConfigItemDef } from \"../../types/config\";\n\nconst ChatModelSchema = <\n R extends z.ZodEnum<[string, ...string[]]> = typeof RoleEnum,\n M extends z.ZodEnum<[string, ...string[]]> = typeof ModalityEnum,\n>(\n Roles: R = RoleEnum as unknown as R,\n Modalities: M = ModalityEnum as unknown as M\n) =>\n z.object({\n name: z.string().min(1),\n description: z.string().min(1),\n roles: z.record(Roles, z.string().min(1).optional()),\n modalities: z.array(Modalities).nonempty(),\n maxInputTokens: z.number().int().positive().min(1),\n maxOutputTokens: z.number().int().positive().min(1),\n maxReasoningTokens: z.number().int().positive().min(1).optional(),\n config: z\n .object({\n def: z.record(z.string().min(1), ConfigItemDef),\n schema: z.instanceof(z.ZodObject),\n })\n .refine(\n (config) => {\n const defKeys = Object.keys(config.def);\n const schemaKeys = Object.keys(config.schema?.shape ?? {});\n return defKeys.every((key) => schemaKeys.includes(key)) && schemaKeys.every((key) => defKeys.includes(key));\n },\n {\n message: \"Keys in 'config.def' must exactly match keys in 'config.schema'\",\n }\n ),\n price: z.custom<ChatModelPriceType>(),\n });\ntype ChatModelSchemaType<\n R extends z.ZodEnum<[string, ...string[]]> = typeof RoleEnum,\n M extends z.ZodEnum<[string, ...string[]]> = typeof ModalityEnum,\n> = z.infer<ReturnType<typeof ChatModelSchema<R, M>>>;\n\nexport { ChatModelSchema, type ChatModelSchemaType };\n","import { z } from \"zod\";\n\nconst Headers = z.record(z.string());\ntype HeadersType = z.infer<typeof Headers>;\n\nexport { Headers, type HeadersType };\n","import { z } from \"zod\";\n\nconst Params = z.record(\n z.union([\n z.boolean(),\n z.string(),\n z.number(),\n z.object({}),\n z.array(z.any()),\n z.null(),\n z.undefined(),\n ])\n);\ntype ParamsType = z.infer<typeof Params>;\n\nexport { Params, type ParamsType };\n","import { z } from \"zod\";\n\nconst Url = z.string().url();\ntype UrlType = z.infer<typeof Url>;\n\nexport { Url, type UrlType };\n","const TEMPERATURE = {\n type: \"range\",\n title: \"Temperature\",\n description:\n \"Adjusts the model's creativity level. With a setting of 0, the model strictly picks the most probable next word. \\\n For endeavors that benefit from a dash of inventiveness, consider dialing it up to 0.7 or higher, enabling the model to produce text \\\n that's unexpectedly fresh.\",\n} as const;\n\nconst MAX_TOKENS = {\n type: \"range\",\n title: \"Max tokens\",\n description:\n \"Specify the total tokens for generation, where one token approximates four English characters. \\\n Setting this to 0 defaults to the model's maximum capacity.\",\n} as const;\n\nconst MAX_REASONING_TOKENS = {\n type: \"range\",\n title: \"Max reasoning tokens\",\n description: \"Specify the total tokens for reasoning, where one token approximates four English characters.\",\n} as const;\n\nconst STOP = (max: number) =>\n ({\n type: \"multi\",\n title: \"Stop sequence\",\n description: `Enter up to ${max} sequences that will halt additional text output. \\\n The generated text will exclude these sequences.`,\n }) as const;\n\nconst TOP_A = {\n type: \"range\",\n title: \"Top A\",\n description:\n \"Considers only the top tokens that have 'sufficiently high' probabilities relative to the most likely token, \\\n functioning like a dynamic Top-P. \\\n A lower Top-A value narrows down the token choices based on the highest probability token, \\\n while a higher Top-A value refines the filtering without necessarily impacting the creativity of the output.\",\n} as const;\n\nconst TOP_P = {\n type: \"range\",\n title: \"Top P\",\n description:\n \"Selects a subset of likely tokens for generation, restricting choices to the top-P fraction of possibilities, \\\n such as the top 10% when P=0.1. \\\n This approach can limit the variety of the output. By default, it's set to 1, indicating no restriction. \\\n It's advised to adjust this parameter or temperature to modulate output diversity, but not to modify both simultaneously.\",\n} as const;\n\nconst TOP_K = {\n type: \"range\",\n title: \"Top K\",\n description:\n \"Select only from the highest K probabilities for each following word, effectively eliminating the less likely 'long tail' options.\",\n} as const;\n\nconst MIN_P = {\n type: \"range\",\n title: \"Min P\",\n description:\n \"Specifies the minimum probability a token must have to be considered, in relation to the probability of the most likely token. \\\n (This value varies based on the confidence level of the top token.) \\\n For example, if Min-P is set to 0.1, only tokens with at least 1/10th the probability of the highest-ranked token will be considered.\",\n} as const;\n\nconst FREQUENCY_PENALTY = {\n type: \"range\",\n title: \"Frequency penalty\",\n description:\n \"Minimize redundancy.\\\n By assigning a penalty to frequently used tokens within the text, the likelihood of repeating identical phrases is reduced. \\\n The default setting for this penalty is zero.\",\n} as const;\n\nconst PRESENCE_PENALTY = {\n type: \"range\",\n title: \"Presence penalty\",\n description:\n \"Enhance the introduction of novel subjects by reducing the preference for tokens that have already appeared in the text, \\\n thus boosting the chances of exploring fresh topics. \\\n The standard setting for this is zero.\",\n} as const;\n\nconst SEED = {\n type: \"range\",\n title: \"Seed\",\n description:\n \"When seed is fixed to a specific value, the model makes a best effort to provide the same response for repeated requests. \\\n Deterministic output isn't guaranteed. \\\n Also, changing the model or parameter settings, such as the temperature, \\\n can cause variations in the response even when you use the same seed value. \\\n By default, a random seed value is used.\",\n} as const;\n\nconst REPETITION_PENALTY = {\n type: \"range\",\n title: \"Repetition penalty\",\n description:\n \"Reduces the likelihood of repeating tokens from the input. \\\n Increasing this value makes the model less prone to repetition, but setting it too high may lead to less coherent output, \\\n often resulting in run-on sentences missing smaller words. \\\n The token penalty is scaled according to the original token's probability.\",\n} as const;\n\nconst LOG_PROBS = {\n type: \"boolean\",\n title: \"Log probs\",\n description:\n \"Whether to return log probabilities of the output tokens or not. If true, returns the log probabilities of each output token returned.\",\n} as const;\n\nconst TOP_LOG_PROBS = {\n type: \"range\",\n title: \"Top log probs\",\n description:\n \"The number of most likely tokens to return at each token position, each with an associated log probability. \\\n 'logprobs' must be set to true if this parameter is used.\",\n} as const;\n\nconst ECHO = {\n type: \"boolean\",\n title: \"Echo\",\n description: \"If true, the response will contain the prompt.\",\n} as const;\n\nconst RESPONSE_FORMAT = {\n type: \"select\",\n title: \"Response format\",\n description:\n \"Choose the response format of your model. For JSON, you must include the string 'JSON' in some form within your system / user prompt.\",\n} as const;\n\nconst RESPONSE_FORMAT_WITH_SCHEMA = {\n type: \"select\",\n title: \"Response format\",\n description:\n \"Choose the response format of your model. 'json_object' colloquially known as JSON mode, instructs the model to respond with a valid \\\n JSON (must include the term 'json' in prompt). 'json_schema' colloquially known as structured outputs, allows you to specify a strict \\\n response schema that the model will adhere to.\",\n} as const;\n\nconst RESPONSE_SCHEMA = {\n type: \"object\",\n title: \"Response schema\",\n description: \"When response format is set to 'json_schema', the model will return a JSON object of the specified schema.\",\n} as const;\n\nconst MCP_SERVERS = {\n type: \"object\",\n title: \"MCP servers\",\n description: \"MCP servers to use for the model.\",\n} as const;\n\nconst CHAT_CONFIG = {\n TEMPERATURE,\n MAX_TOKENS,\n STOP,\n TOP_A,\n TOP_P,\n TOP_K,\n MIN_P,\n FREQUENCY_PENALTY,\n PRESENCE_PENALTY,\n REPETITION_PENALTY,\n SEED,\n LOG_PROBS,\n TOP_LOG_PROBS,\n ECHO,\n RESPONSE_FORMAT,\n RESPONSE_FORMAT_WITH_SCHEMA,\n RESPONSE_SCHEMA,\n MAX_REASONING_TOKENS,\n MCP_SERVERS,\n};\n\nexport { CHAT_CONFIG };\n","const removeUndefinedEntries = <T = unknown>(record: Record<string, T | undefined>): Record<string, T> => {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n return Object.fromEntries(Object.entries(record).filter(([_, value]) => value != null)) as Record<string, T>;\n};\n\nexport { removeUndefinedEntries };\n","import { isRunningInBrowser } from \"./is-running-in-browser\";\n\nconst convertBase64ToUint8Array = (base64String: string): Uint8Array => {\n const base64Url = base64String.replace(/-/g, \"+\").replace(/_/g, \"/\");\n const latin1string = globalThis.atob(base64Url);\n return Uint8Array.from(latin1string, (byte) => byte.codePointAt(0)!);\n};\n\nconst convertUint8ArrayToBase64 = (array: Uint8Array): string => {\n let latin1string = \"\";\n\n // Note: regular for loop to support older JavaScript versions that\n // do not support for..of on Uint8Array\n for (let i = 0; i < array.length; i++) {\n latin1string += String.fromCodePoint(array[i]);\n }\n\n return globalThis.btoa(latin1string);\n};\n\nconst encodedBase64ToString = (base64: string): string => {\n if (isRunningInBrowser()) {\n const binaryString = atob(base64);\n const bytes = new Uint8Array(binaryString.length);\n for (let i = 0; i < binaryString.length; i++) {\n bytes[i] = binaryString.charCodeAt(i);\n }\n const decoder = new TextDecoder(\"utf-8\");\n return decoder.decode(bytes);\n } else {\n return Buffer.from(base64, \"base64\").toString(\"utf-8\");\n }\n};\n\nconst getMimeTypeFromBase64 = (base64: string): string => {\n const mimeTypePrefix = base64.split(\";\")[0];\n const mimeType = mimeTypePrefix.split(\"/\")[1];\n return mimeType;\n};\n\nexport { convertBase64ToUint8Array, convertUint8ArrayToBase64, encodedBase64ToString, getMimeTypeFromBase64 };\n","const urlWithoutTrailingSlash = (url: string): string => {\n return url?.replace(/\\/$/, \"\");\n};\n\nexport { urlWithoutTrailingSlash };\n","import { CHAT_CONFIG, MultiStringConfigItem, RangeConfigItem, SelectBooleanConfigItem, SelectStringConfigItem } from \"@adaline/provider\";\n\nconst temperature = RangeConfigItem({\n param: \"temperature\",\n title: CHAT_CONFIG.TEMPERATURE.title,\n description: CHAT_CONFIG.TEMPERATURE.description,\n min: 0,\n max: 2,\n step: 0.01,\n default: 1,\n});\n\nconst maxTokens = (maxOutputTokens: number) =>\n RangeConfigItem({\n param: \"max_tokens\",\n title: CHAT_CONFIG.MAX_TOKENS.title,\n description: CHAT_CONFIG.MAX_TOKENS.description,\n min: 0,\n max: maxOutputTokens,\n step: 1,\n default: 0,\n });\n\nconst stop = (maxSequences: number) =>\n MultiStringConfigItem({\n param: \"stop\",\n title: CHAT_CONFIG.STOP(maxSequences).title,\n description: CHAT_CONFIG.STOP(maxSequences).description,\n max: maxSequences,\n });\n\nconst topA = RangeConfigItem({\n param: \"top_a\",\n title: CHAT_CONFIG.TOP_A.title,\n description: CHAT_CONFIG.TOP_A.description,\n min: 0,\n max: 1,\n step: 0.01,\n default: 0,\n});\n\nconst topK = RangeConfigItem({\n param: \"top_k\",\n title: CHAT_CONFIG.TOP_K.title,\n description: CHAT_CONFIG.TOP_K.description,\n min: 0,\n max: 100,\n step: 1,\n default: 0,\n});\n\nconst topP = RangeConfigItem({\n param: \"top_p\",\n title: CHAT_CONFIG.TOP_P.title,\n description: CHAT_CONFIG.TOP_P.description,\n min: 0,\n max: 1,\n step: 0.01,\n default: 1,\n});\n\nconst minP = RangeConfigItem({\n param: \"min_p\",\n title: CHAT_CONFIG.MIN_P.title,\n description: CHAT_CONFIG.MIN_P.description,\n min: 0,\n max: 1,\n step: 0.01,\n default: 0,\n});\n\nconst frequencyPenalty = RangeConfigItem({\n param: \"frequency_penalty\",\n title: CHAT_CONFIG.FREQUENCY_PENALTY.title,\n description: CHAT_CONFIG.FREQUENCY_PENALTY.description,\n min: -2,\n max: 2,\n step: 0.01,\n default: 0,\n});\n\nconst presencePenalty = RangeConfigItem({\n param: \"presence_penalty\",\n title: CHAT_CONFIG.PRESENCE_PENALTY.title,\n description: CHAT_CONFIG.PRESENCE_PENALTY.description,\n min: -2,\n max: 2,\n step: 0.01,\n default: 0,\n});\n\nconst repetitionPenalty = RangeConfigItem({\n param: \"repetition_penalty\",\n title: CHAT_CONFIG.REPETITION_PENALTY.title,\n description: CHAT_CONFIG.REPETITION_PENALTY.description,\n min: 0,\n max: 2,\n step: 0.01,\n default: 0,\n});\n\nconst seed = RangeConfigItem({\n param: \"seed\",\n title: CHAT_CONFIG.SEED.title,\n description: CHAT_CONFIG.SEED.description,\n min: 0,\n max: 1000000,\n step: 1,\n default: 0,\n});\n\nconst logProbs = SelectBooleanConfigItem({\n param: \"logprobs\",\n title: CHAT_CONFIG.LOG_PROBS.title,\n description: CHAT_CONFIG.LOG_PROBS.description,\n default: false,\n});\n\nconst topLogProbs = RangeConfigItem({\n param: \"top_logprobs\",\n title: CHAT_CONFIG.TOP_LOG_PROBS.title,\n description: CHAT_CONFIG.TOP_LOG_PROBS.description,\n min: 0,\n max: 20,\n step: 1,\n default: 0,\n});\n\nconst toolChoice = SelectStringConfigItem({\n param: \"tool_choice\",\n title: \"Tool choice\",\n description:\n \"Controls which (if any) tool is called by the model. \\\n 'none' means the model will not call a function. \\\n 'auto' means the model can pick between generating a message or calling a tool.\",\n default: \"auto\",\n choices: [\"auto\", \"required\", \"none\"],\n});\n\nconst responseFormat = SelectStringConfigItem({\n param: \"response_format\",\n title: CHAT_CONFIG.RESPONSE_FORMAT.title,\n description: CHAT_CONFIG.RESPONSE_FORMAT.description,\n default: \"text\",\n choices: [\"text\", \"json_object\"],\n});\n\nexport {\n frequencyPenalty,\n logProbs,\n maxTokens,\n presencePenalty,\n repetitionPenalty,\n seed,\n stop,\n temperature,\n toolChoice,\n topLogProbs,\n topP,\n topA,\n topK,\n minP,\n responseFormat,\n};\n","import { ChatModelBaseConfigDef, ChatModelBaseConfigSchema } from \"./chat-model\";\n\nconst OpenRouterChatModelConfigs = {\n base: (maxOutputTokens: number, maxSequences: number) => ({\n def: ChatModelBaseConfigDef(maxOutputTokens, maxSequences),\n schema: ChatModelBaseConfigSchema(maxOutputTokens, maxSequences),\n }),\n} as const;\n\nexport { OpenRouterChatModelConfigs };\n","import { z } from \"zod\";\n\nimport { ChatModelSchemaType, ChatModelV1, EmbeddingModelSchemaType, EmbeddingModelV1, ProviderError, ProviderV1 } from \"@adaline/provider\";\n\nimport { BaseChatModel, BaseChatModelOptions, BaseChatModelSchema, type BaseChatModelOptionsType } from \"../models/chat-models\";\n\nconst ProviderLiteral = \"open-router\";\nclass OpenRouter<C extends BaseChatModelOptionsType, E extends Record<string, any> = Record<string, any>> implements ProviderV1<C, E> {\n readonly version = \"v1\" as const;\n readonly name = ProviderLiteral;\n static readonly baseUrl = \"https://openrouter.ai/api/v1\";\n\n private readonly embeddingModelFactories: Record<\n string,\n {\n model: { new (options: any): EmbeddingModelV1 };\n modelOptions: z.ZodType<any>;\n modelSchema: EmbeddingModelSchemaType;\n }\n > = {};\n\n chatModelLiterals(): string[] {\n return [\"__base__\"];\n }\n\n chatModelSchemas(): Record<string, ChatModelSchemaType> {\n return {\n __base__: BaseChatModelSchema,\n };\n }\n\n chatModel(options: C): ChatModelV1 {\n const model = BaseChatModel;\n const parsedOptions = BaseChatModelOptions.parse(options);\n return new model(BaseChatModelSchema, parsedOptions);\n }\n\n embeddingModelLiterals(): string[] {\n return Object.keys(this.embeddingModelFactories);\n }\n\n embeddingModelSchemas(): Record<string, EmbeddingModelSchemaType> {\n return Object.keys(this.embeddingModelFactories).reduce(\n (acc, key) => {\n acc[key] = this.embeddingModelFactories[key].modelSchema;\n return acc;\n },\n {} as Record<string, EmbeddingModelSchemaType>\n );\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n embeddingModel(options: E): EmbeddingModelV1 {\n throw new ProviderError({\n info: \"Open Router does not support embedding models yet\",\n cause: new Error(\"Open Router does not support embedding models yet\"),\n });\n }\n}\n\nexport { OpenRouter };\n","{\n \"microsoft/mai-ds-r1:free\": {\n \"modelName\": \"microsoft/mai-ds-r1:free\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0,\n \"outputPricePerMillion\": 0\n }\n }\n }\n ]\n },\n \"google/gemini-2.5-pro-preview-03-25\": {\n \"modelName\": \"google/gemini-2.5-pro-preview-03-25\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 1.25,\n \"outputPricePerMillion\": 10\n }\n }\n }\n ]\n },\n \"thudm/glm-z1-32b:free\": {\n \"modelName\": \"thudm/glm-z1-32b:free\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0,\n \"outputPricePerMillion\": 0\n }\n }\n }\n ]\n },\n \"thudm/glm-4-32b:free\": {\n \"modelName\": \"thudm/glm-4-32b:free\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0,\n \"outputPricePerMillion\": 0\n }\n }\n }\n ]\n },\n \"google/gemini-2.5-flash-preview\": {\n \"modelName\": \"google/gemini-2.5-flash-preview\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.15,\n \"outputPricePerMillion\": 0.6\n }\n }\n }\n ]\n },\n \"google/gemini-2.5-flash-preview:thinking\": {\n \"modelName\": \"google/gemini-2.5-flash-preview:thinking\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.15,\n \"outputPricePerMillion\": 3.5\n }\n }\n }\n ]\n },\n \"openai/o4-mini-high\": {\n \"modelName\": \"openai/o4-mini-high\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 1.1,\n \"outputPricePerMillion\": 4.4\n }\n }\n }\n ]\n },\n \"openai/o3\": {\n \"modelName\": \"openai/o3\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 10,\n \"outputPricePerMillion\": 40\n }\n }\n }\n ]\n },\n \"openai/o4-mini\": {\n \"modelName\": \"openai/o4-mini\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 1.1,\n \"outputPricePerMillion\": 4.4\n }\n }\n }\n ]\n },\n \"shisa-ai/shisa-v2-llama3.3-70b:free\": {\n \"modelName\": \"shisa-ai/shisa-v2-llama3.3-70b:free\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0,\n \"outputPricePerMillion\": 0\n }\n }\n }\n ]\n },\n \"qwen/qwen2.5-coder-7b-instruct\": {\n \"modelName\": \"qwen/qwen2.5-coder-7b-instruct\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.19999999999999998,\n \"outputPricePerMillion\": 0.19999999999999998\n }\n }\n }\n ]\n },\n \"openai/gpt-4.1\": {\n \"modelName\": \"openai/gpt-4.1\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 2,\n \"outputPricePerMillion\": 8\n }\n }\n }\n ]\n },\n \"openai/gpt-4.1-mini\": {\n \"modelName\": \"openai/gpt-4.1-mini\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.39999999999999997,\n \"outputPricePerMillion\": 1.5999999999999999\n }\n }\n }\n ]\n },\n \"openai/gpt-4.1-nano\": {\n \"modelName\": \"openai/gpt-4.1-nano\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.09999999999999999,\n \"outputPricePerMillion\": 0.39999999999999997\n }\n }\n }\n ]\n },\n \"eleutherai/llemma_7b\": {\n \"modelName\": \"eleutherai/llemma_7b\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.7999999999999999,\n \"outputPricePerMillion\": 1.2\n }\n }\n }\n ]\n },\n \"alfredpros/codellama-7b-instruct-solidity\": {\n \"modelName\": \"alfredpros/codellama-7b-instruct-solidity\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.7999999999999999,\n \"outputPricePerMillion\": 1.2\n }\n }\n }\n ]\n },\n \"arliai/qwq-32b-arliai-rpr-v1:free\": {\n \"modelName\": \"arliai/qwq-32b-arliai-rpr-v1:free\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0,\n \"outputPricePerMillion\": 0\n }\n }\n }\n ]\n },\n \"agentica-org/deepcoder-14b-preview:free\": {\n \"modelName\": \"agentica-org/deepcoder-14b-preview:free\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0,\n \"outputPricePerMillion\": 0\n }\n }\n }\n ]\n },\n \"moonshotai/kimi-vl-a3b-thinking:free\": {\n \"modelName\": \"moonshotai/kimi-vl-a3b-thinking:free\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0,\n \"outputPricePerMillion\": 0\n }\n }\n }\n ]\n },\n \"x-ai/grok-3-mini-beta\": {\n \"modelName\": \"x-ai/grok-3-mini-beta\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.3,\n \"outputPricePerMillion\": 0.5\n }\n }\n }\n ]\n },\n \"x-ai/grok-3-beta\": {\n \"modelName\": \"x-ai/grok-3-beta\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 3,\n \"outputPricePerMillion\": 15\n }\n }\n }\n ]\n },\n \"nvidia/llama-3.1-nemotron-nano-8b-v1:free\": {\n \"modelName\": \"nvidia/llama-3.1-nemotron-nano-8b-v1:free\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0,\n \"outputPricePerMillion\": 0\n }\n }\n }\n ]\n },\n \"nvidia/llama-3.3-nemotron-super-49b-v1:free\": {\n \"modelName\": \"nvidia/llama-3.3-nemotron-super-49b-v1:free\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0,\n \"outputPricePerMillion\": 0\n }\n }\n }\n ]\n },\n \"nvidia/llama-3.1-nemotron-ultra-253b-v1:free\": {\n \"modelName\": \"nvidia/llama-3.1-nemotron-ultra-253b-v1:free\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0,\n \"outputPricePerMillion\": 0\n }\n }\n }\n ]\n },\n \"meta-llama/llama-4-maverick:free\": {\n \"modelName\": \"meta-llama/llama-4-maverick:free\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0,\n \"outputPricePerMillion\": 0\n }\n }\n }\n ]\n },\n \"meta-llama/llama-4-maverick\": {\n \"modelName\": \"meta-llama/llama-4-maverick\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.16999999999999998,\n \"outputPricePerMillion\": 0.6\n }\n }\n }\n ]\n },\n \"meta-llama/llama-4-scout:free\": {\n \"modelName\": \"meta-llama/llama-4-scout:free\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0,\n \"outputPricePerMillion\": 0\n }\n }\n }\n ]\n },\n \"meta-llama/llama-4-scout\": {\n \"modelName\": \"meta-llama/llama-4-scout\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.08,\n \"outputPricePerMillion\": 0.3\n }\n }\n }\n ]\n },\n \"all-hands/openhands-lm-32b-v0.1\": {\n \"modelName\": \"all-hands/openhands-lm-32b-v0.1\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 2.6,\n \"outputPricePerMillion\": 3.4\n }\n }\n }\n ]\n },\n \"mistral/ministral-8b\": {\n \"modelName\": \"mistral/ministral-8b\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.09999999999999999,\n \"outputPricePerMillion\": 0.09999999999999999\n }\n }\n }\n ]\n },\n \"deepseek/deepseek-v3-base:free\": {\n \"modelName\": \"deepseek/deepseek-v3-base:free\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0,\n \"outputPricePerMillion\": 0\n }\n }\n }\n ]\n },\n \"scb10x/llama3.1-typhoon2-8b-instruct\": {\n \"modelName\": \"scb10x/llama3.1-typhoon2-8b-instruct\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.18,\n \"outputPricePerMillion\": 0.18\n }\n }\n }\n ]\n },\n \"scb10x/llama3.1-typhoon2-70b-instruct\": {\n \"modelName\": \"scb10x/llama3.1-typhoon2-70b-instruct\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.88,\n \"outputPricePerMillion\": 0.88\n }\n }\n }\n ]\n },\n \"allenai/molmo-7b-d:free\": {\n \"modelName\": \"allenai/molmo-7b-d:free\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0,\n \"outputPricePerMillion\": 0\n }\n }\n }\n ]\n },\n \"bytedance-research/ui-tars-72b:free\": {\n \"modelName\": \"bytedance-research/ui-tars-72b:free\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0,\n \"outputPricePerMillion\": 0\n }\n }\n }\n ]\n },\n \"qwen/qwen2.5-vl-3b-instruct:free\": {\n \"modelName\": \"qwen/qwen2.5-vl-3b-instruct:free\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0,\n \"outputPricePerMillion\": 0\n }\n }\n }\n ]\n },\n \"google/gemini-2.5-pro-exp-03-25:free\": {\n \"modelName\": \"google/gemini-2.5-pro-exp-03-25:free\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0,\n \"outputPricePerMillion\": 0\n }\n }\n }\n ]\n },\n \"qwen/qwen2.5-vl-32b-instruct:free\": {\n \"modelName\": \"qwen/qwen2.5-vl-32b-instruct:free\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0,\n \"outputPricePerMillion\": 0\n }\n }\n }\n ]\n },\n \"qwen/qwen2.5-vl-32b-instruct\": {\n \"modelName\": \"qwen/qwen2.5-vl-32b-instruct\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.8999999999999999,\n \"outputPricePerMillion\": 0.8999999999999999\n }\n }\n }\n ]\n },\n \"deepseek/deepseek-chat-v3-0324:free\": {\n \"modelName\": \"deepseek/deepseek-chat-v3-0324:free\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0,\n \"outputPricePerMillion\": 0\n }\n }\n }\n ]\n },\n \"deepseek/deepseek-chat-v3-0324\": {\n \"modelName\": \"deepseek/deepseek-chat-v3-0324\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.27,\n \"outputPricePerMillion\": 1.1\n }\n }\n }\n ]\n },\n \"featherless/qwerky-72b:free\": {\n \"modelName\": \"featherless/qwerky-72b:free\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0,\n \"outputPricePerMillion\": 0\n }\n }\n }\n ]\n },\n \"openai/o1-pro\": {\n \"modelName\": \"openai/o1-pro\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 150,\n \"outputPricePerMillion\": 600\n }\n }\n }\n ]\n },\n \"mistralai/mistral-small-3.1-24b-instruct:free\": {\n \"modelName\": \"mistralai/mistral-small-3.1-24b-instruct:free\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0,\n \"outputPricePerMillion\": 0\n }\n }\n }\n ]\n },\n \"mistralai/mistral-small-3.1-24b-instruct\": {\n \"modelName\": \"mistralai/mistral-small-3.1-24b-instruct\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.09999999999999999,\n \"outputPricePerMillion\": 0.3\n }\n }\n }\n ]\n },\n \"open-r1/olympiccoder-32b:free\": {\n \"modelName\": \"open-r1/olympiccoder-32b:free\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0,\n \"outputPricePerMillion\": 0\n }\n }\n }\n ]\n },\n \"steelskull/l3.3-electra-r1-70b\": {\n \"modelName\": \"steelskull/l3.3-electra-r1-70b\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.7,\n \"outputPricePerMillion\": 0.95\n }\n }\n }\n ]\n },\n \"google/gemma-3-1b-it:free\": {\n \"modelName\": \"google/gemma-3-1b-it:free\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0,\n \"outputPricePerMillion\": 0\n }\n }\n }\n ]\n },\n \"google/gemma-3-4b-it:free\": {\n \"modelName\": \"google/gemma-3-4b-it:free\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0,\n \"outputPricePerMillion\": 0\n }\n }\n }\n ]\n },\n \"google/gemma-3-4b-it\": {\n \"modelName\": \"google/gemma-3-4b-it\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.02,\n \"outputPricePerMillion\": 0.04\n }\n }\n }\n ]\n },\n \"ai21/jamba-1.6-large\": {\n \"modelName\": \"ai21/jamba-1.6-large\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 2,\n \"outputPricePerMillion\": 8\n }\n }\n }\n ]\n },\n \"ai21/jamba-1.6-mini\": {\n \"modelName\": \"ai21/jamba-1.6-mini\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.19999999999999998,\n \"outputPricePerMillion\": 0.39999999999999997\n }\n }\n }\n ]\n },\n \"google/gemma-3-12b-it:free\": {\n \"modelName\": \"google/gemma-3-12b-it:free\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0,\n \"outputPricePerMillion\": 0\n }\n }\n }\n ]\n },\n \"google/gemma-3-12b-it\": {\n \"modelName\": \"google/gemma-3-12b-it\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.049999999999999996,\n \"outputPricePerMillion\": 0.09999999999999999\n }\n }\n }\n ]\n },\n \"cohere/command-a\": {\n \"modelName\": \"cohere/command-a\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 2.5,\n \"outputPricePerMillion\": 10\n }\n }\n }\n ]\n },\n \"openai/gpt-4o-mini-search-preview\": {\n \"modelName\": \"openai/gpt-4o-mini-search-preview\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.15,\n \"outputPricePerMillion\": 0.6\n }\n }\n }\n ]\n },\n \"openai/gpt-4o-search-preview\": {\n \"modelName\": \"openai/gpt-4o-search-preview\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 2.5,\n \"outputPricePerMillion\": 10\n }\n }\n }\n ]\n },\n \"rekaai/reka-flash-3:free\": {\n \"modelName\": \"rekaai/reka-flash-3:free\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0,\n \"outputPricePerMillion\": 0\n }\n }\n }\n ]\n },\n \"google/gemma-3-27b-it:free\": {\n \"modelName\": \"google/gemma-3-27b-it:free\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0,\n \"outputPricePerMillion\": 0\n }\n }\n }\n ]\n },\n \"google/gemma-3-27b-it\": {\n \"modelName\": \"google/gemma-3-27b-it\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.09999999999999999,\n \"outputPricePerMillion\": 0.19999999999999998\n }\n }\n }\n ]\n },\n \"thedrummer/anubis-pro-105b-v1\": {\n \"modelName\": \"thedrummer/anubis-pro-105b-v1\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.7999999999999999,\n \"outputPricePerMillion\": 1\n }\n }\n }\n ]\n },\n \"latitudegames/wayfarer-large-70b-llama-3.3\": {\n \"modelName\": \"latitudegames/wayfarer-large-70b-llama-3.3\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.7999999999999999,\n \"outputPricePerMillion\": 0.8999999999999999\n }\n }\n }\n ]\n },\n \"thedrummer/skyfall-36b-v2\": {\n \"modelName\": \"thedrummer/skyfall-36b-v2\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.5,\n \"outputPricePerMillion\": 0.7999999999999999\n }\n }\n }\n ]\n },\n \"microsoft/phi-4-multimodal-instruct\": {\n \"modelName\": \"microsoft/phi-4-multimodal-instruct\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.049999999999999996,\n \"outputPricePerMillion\": 0.09999999999999999\n }\n }\n }\n ]\n },\n \"perplexity/sonar-reasoning-pro\": {\n \"modelName\": \"perplexity/sonar-reasoning-pro\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 2,\n \"outputPricePerMillion\": 8\n }\n }\n }\n ]\n },\n \"perplexity/sonar-pro\": {\n \"modelName\": \"perplexity/sonar-pro\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 3,\n \"outputPricePerMillion\": 15\n }\n }\n }\n ]\n },\n \"perplexity/sonar-deep-research\": {\n \"modelName\": \"perplexity/sonar-deep-research\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 2,\n \"outputPricePerMillion\": 8\n }\n }\n }\n ]\n },\n \"deepseek/deepseek-r1-zero:free\": {\n \"modelName\": \"deepseek/deepseek-r1-zero:free\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0,\n \"outputPricePerMillion\": 0\n }\n }\n }\n ]\n },\n \"qwen/qwq-32b:free\": {\n \"modelName\": \"qwen/qwq-32b:free\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0,\n \"outputPricePerMillion\": 0\n }\n }\n }\n ]\n },\n \"qwen/qwq-32b\": {\n \"modelName\": \"qwen/qwq-32b\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.15,\n \"outputPricePerMillion\": 0.19999999999999998\n }\n }\n }\n ]\n },\n \"moonshotai/moonlight-16b-a3b-instruct:free\": {\n \"modelName\": \"moonshotai/moonlight-16b-a3b-instruct:free\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0,\n \"outputPricePerMillion\": 0\n }\n }\n }\n ]\n },\n \"nousresearch/deephermes-3-llama-3-8b-preview:free\": {\n \"modelName\": \"nousresearch/deephermes-3-llama-3-8b-preview:free\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0,\n \"outputPricePerMillion\": 0\n }\n }\n }\n ]\n },\n \"openai/gpt-4.5-preview\": {\n \"modelName\": \"openai/gpt-4.5-preview\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 75,\n \"outputPricePerMillion\": 150\n }\n }\n }\n ]\n },\n \"google/gemini-2.0-flash-lite-001\": {\n \"modelName\": \"google/gemini-2.0-flash-lite-001\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.075,\n \"outputPricePerMillion\": 0.3\n }\n }\n }\n ]\n },\n \"anthropic/claude-3.7-sonnet\": {\n \"modelName\": \"anthropic/claude-3.7-sonnet\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 3,\n \"outputPricePerMillion\": 15\n }\n }\n }\n ]\n },\n \"anthropic/claude-3.7-sonnet:thinking\": {\n \"modelName\": \"anthropic/claude-3.7-sonnet:thinking\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 3,\n \"outputPricePerMillion\": 15\n }\n }\n }\n ]\n },\n \"anthropic/claude-3.7-sonnet:beta\": {\n \"modelName\": \"anthropic/claude-3.7-sonnet:beta\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 3,\n \"outputPricePerMillion\": 15\n }\n }\n }\n ]\n },\n \"perplexity/r1-1776\": {\n \"modelName\": \"perplexity/r1-1776\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 2,\n \"outputPricePerMillion\": 8\n }\n }\n }\n ]\n },\n \"mistralai/mistral-saba\": {\n \"modelName\": \"mistralai/mistral-saba\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.19999999999999998,\n \"outputPricePerMillion\": 0.6\n }\n }\n }\n ]\n },\n \"cognitivecomputations/dolphin3.0-r1-mistral-24b:free\": {\n \"modelName\": \"cognitivecomputations/dolphin3.0-r1-mistral-24b:free\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0,\n \"outputPricePerMillion\": 0\n }\n }\n }\n ]\n },\n \"cognitivecomputations/dolphin3.0-mistral-24b:free\": {\n \"modelName\": \"cognitivecomputations/dolphin3.0-mistral-24b:free\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0,\n \"outputPricePerMillion\": 0\n }\n }\n }\n ]\n },\n \"meta-llama/llama-guard-3-8b\": {\n \"modelName\": \"meta-llama/llama-guard-3-8b\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.055,\n \"outputPricePerMillion\": 0.055\n }\n }\n }\n ]\n },\n \"openai/o3-mini-high\": {\n \"modelName\": \"openai/o3-mini-high\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 1.1,\n \"outputPricePerMillion\": 4.4\n }\n }\n }\n ]\n },\n \"deepseek/deepseek-r1-distill-llama-8b\": {\n \"modelName\": \"deepseek/deepseek-r1-distill-llama-8b\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.04,\n \"outputPricePerMillion\": 0.04\n }\n }\n }\n ]\n },\n \"google/gemini-2.0-flash-001\": {\n \"modelName\": \"google/gemini-2.0-flash-001\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.09999999999999999,\n \"outputPricePerMillion\": 0.39999999999999997\n }\n }\n }\n ]\n },\n \"qwen/qwen-vl-plus\": {\n \"modelName\": \"qwen/qwen-vl-plus\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.21,\n \"outputPricePerMillion\": 0.63\n }\n }\n }\n ]\n },\n \"aion-labs/aion-1.0\": {\n \"modelName\": \"aion-labs/aion-1.0\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 4,\n \"outputPricePerMillion\": 8\n }\n }\n }\n ]\n },\n \"aion-labs/aion-1.0-mini\": {\n \"modelName\": \"aion-labs/aion-1.0-mini\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.7,\n \"outputPricePerMillion\": 1.4\n }\n }\n }\n ]\n },\n \"aion-labs/aion-rp-llama-3.1-8b\": {\n \"modelName\": \"aion-labs/aion-rp-llama-3.1-8b\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.19999999999999998,\n \"outputPricePerMillion\": 0.19999999999999998\n }\n }\n }\n ]\n },\n \"qwen/qwen-vl-max\": {\n \"modelName\": \"qwen/qwen-vl-max\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.7999999999999999,\n \"outputPricePerMillion\": 3.1999999999999997\n }\n }\n }\n ]\n },\n \"qwen/qwen-turbo\": {\n \"modelName\": \"qwen/qwen-turbo\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.049999999999999996,\n \"outputPricePerMillion\": 0.19999999999999998\n }\n }\n }\n ]\n },\n \"qwen/qwen2.5-vl-72b-instruct:free\": {\n \"modelName\": \"qwen/qwen2.5-vl-72b-instruct:free\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0,\n \"outputPricePerMillion\": 0\n }\n }\n }\n ]\n },\n \"qwen/qwen2.5-vl-72b-instruct\": {\n \"modelName\": \"qwen/qwen2.5-vl-72b-instruct\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.7,\n \"outputPricePerMillion\": 0.7\n }\n }\n }\n ]\n },\n \"qwen/qwen-plus\": {\n \"modelName\": \"qwen/qwen-plus\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.39999999999999997,\n \"outputPricePerMillion\": 1.2\n }\n }\n }\n ]\n },\n \"qwen/qwen-max\": {\n \"modelName\": \"qwen/qwen-max\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 1.5999999999999999,\n \"outputPricePerMillion\": 6.3999999999999995\n }\n }\n }\n ]\n },\n \"openai/o3-mini\": {\n \"modelName\": \"openai/o3-mini\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 1.1,\n \"outputPricePerMillion\": 4.4\n }\n }\n }\n ]\n },\n \"deepseek/deepseek-r1-distill-qwen-1.5b\": {\n \"modelName\": \"deepseek/deepseek-r1-distill-qwen-1.5b\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.18,\n \"outputPricePerMillion\": 0.18\n }\n }\n }\n ]\n },\n \"mistralai/mistral-small-24b-instruct-2501:free\": {\n \"modelName\": \"mistralai/mistral-small-24b-instruct-2501:free\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0,\n \"outputPricePerMillion\": 0\n }\n }\n }\n ]\n },\n \"mistralai/mistral-small-24b-instruct-2501\": {\n \"modelName\": \"mistralai/mistral-small-24b-instruct-2501\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.07,\n \"outputPricePerMillion\": 0.14\n }\n }\n }\n ]\n },\n \"deepseek/deepseek-r1-distill-qwen-32b:free\": {\n \"modelName\": \"deepseek/deepseek-r1-distill-qwen-32b:free\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0,\n \"outputPricePerMillion\": 0\n }\n }\n }\n ]\n },\n \"deepseek/deepseek-r1-distill-qwen-32b\": {\n \"modelName\": \"deepseek/deepseek-r1-distill-qwen-32b\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.12,\n \"outputPricePerMillion\": 0.18\n }\n }\n }\n ]\n },\n \"deepseek/deepseek-r1-distill-qwen-14b:free\": {\n \"modelName\": \"deepseek/deepseek-r1-distill-qwen-14b:free\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0,\n \"outputPricePerMillion\": 0\n }\n }\n }\n ]\n },\n \"deepseek/deepseek-r1-distill-qwen-14b\": {\n \"modelName\": \"deepseek/deepseek-r1-distill-qwen-14b\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.15,\n \"outputPricePerMillion\": 0.15\n }\n }\n }\n ]\n },\n \"perplexity/sonar-reasoning\": {\n \"modelName\": \"perplexity/sonar-reasoning\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 1,\n \"outputPricePerMillion\": 5\n }\n }\n }\n ]\n },\n \"perplexity/sonar\": {\n \"modelName\": \"perplexity/sonar\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 1,\n \"outputPricePerMillion\": 1\n }\n }\n }\n ]\n },\n \"liquid/lfm-7b\": {\n \"modelName\": \"liquid/lfm-7b\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.01,\n \"outputPricePerMillion\": 0.01\n }\n }\n }\n ]\n },\n \"liquid/lfm-3b\": {\n \"modelName\": \"liquid/lfm-3b\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.02,\n \"outputPricePerMillion\": 0.02\n }\n }\n }\n ]\n },\n \"deepseek/deepseek-r1-distill-llama-70b:free\": {\n \"modelName\": \"deepseek/deepseek-r1-distill-llama-70b:free\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0,\n \"outputPricePerMillion\": 0\n }\n }\n }\n ]\n },\n \"deepseek/deepseek-r1-distill-llama-70b\": {\n \"modelName\": \"deepseek/deepseek-r1-distill-llama-70b\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.09999999999999999,\n \"outputPricePerMillion\": 0.39999999999999997\n }\n }\n }\n ]\n },\n \"deepseek/deepseek-r1:free\": {\n \"modelName\": \"deepseek/deepseek-r1:free\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0,\n \"outputPricePerMillion\": 0\n }\n }\n }\n ]\n },\n \"deepseek/deepseek-r1\": {\n \"modelName\": \"deepseek/deepseek-r1\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.5,\n \"outputPricePerMillion\": 2.1799999999999997\n }\n }\n }\n ]\n },\n \"sophosympatheia/rogue-rose-103b-v0.2:free\": {\n \"modelName\": \"sophosympatheia/rogue-rose-103b-v0.2:free\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0,\n \"outputPricePerMillion\": 0\n }\n }\n }\n ]\n },\n \"minimax/minimax-01\": {\n \"modelName\": \"minimax/minimax-01\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.19999999999999998,\n \"outputPricePerMillion\": 1.1\n }\n }\n }\n ]\n },\n \"mistralai/codestral-2501\": {\n \"modelName\": \"mistralai/codestral-2501\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.3,\n \"outputPricePerMillion\": 0.8999999999999999\n }\n }\n }\n ]\n },\n \"microsoft/phi-4\": {\n \"modelName\": \"microsoft/phi-4\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.07,\n \"outputPricePerMillion\": 0.14\n }\n }\n }\n ]\n },\n \"deepseek/deepseek-chat:free\": {\n \"modelName\": \"deepseek/deepseek-chat:free\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0,\n \"outputPricePerMillion\": 0\n }\n }\n }\n ]\n },\n \"deepseek/deepseek-chat\": {\n \"modelName\": \"deepseek/deepseek-chat\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.38,\n \"outputPricePerMillion\": 0.8899999999999999\n }\n }\n }\n ]\n },\n \"sao10k/l3.3-euryale-70b\": {\n \"modelName\": \"sao10k/l3.3-euryale-70b\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.7,\n \"outputPricePerMillion\": 0.7999999999999999\n }\n }\n }\n ]\n },\n \"openai/o1\": {\n \"modelName\": \"openai/o1\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 15,\n \"outputPricePerMillion\": 60\n }\n }\n }\n ]\n },\n \"eva-unit-01/eva-llama-3.33-70b\": {\n \"modelName\": \"eva-unit-01/eva-llama-3.33-70b\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 4,\n \"outputPricePerMillion\": 6\n }\n }\n }\n ]\n },\n \"x-ai/grok-2-vision-1212\": {\n \"modelName\": \"x-ai/grok-2-vision-1212\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 2,\n \"outputPricePerMillion\": 10\n }\n }\n }\n ]\n },\n \"x-ai/grok-2-1212\": {\n \"modelName\": \"x-ai/grok-2-1212\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 2,\n \"outputPricePerMillion\": 10\n }\n }\n }\n ]\n },\n \"cohere/command-r7b-12-2024\": {\n \"modelName\": \"cohere/command-r7b-12-2024\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.0375,\n \"outputPricePerMillion\": 0.15\n }\n }\n }\n ]\n },\n \"google/gemini-2.0-flash-exp:free\": {\n \"modelName\": \"google/gemini-2.0-flash-exp:free\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0,\n \"outputPricePerMillion\": 0\n }\n }\n }\n ]\n },\n \"meta-llama/llama-3.3-70b-instruct:free\": {\n \"modelName\": \"meta-llama/llama-3.3-70b-instruct:free\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0,\n \"outputPricePerMillion\": 0\n }\n }\n }\n ]\n },\n \"meta-llama/llama-3.3-70b-instruct\": {\n \"modelName\": \"meta-llama/llama-3.3-70b-instruct\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.09999999999999999,\n \"outputPricePerMillion\": 0.25\n }\n }\n }\n ]\n },\n \"amazon/nova-lite-v1\": {\n \"modelName\": \"amazon/nova-lite-v1\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.06,\n \"outputPricePerMillion\": 0.24\n }\n }\n }\n ]\n },\n \"amazon/nova-micro-v1\": {\n \"modelName\": \"amazon/nova-micro-v1\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.035,\n \"outputPricePerMillion\": 0.14\n }\n }\n }\n ]\n },\n \"amazon/nova-pro-v1\": {\n \"modelName\": \"amazon/nova-pro-v1\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.7999999999999999,\n \"outputPricePerMillion\": 3.1999999999999997\n }\n }\n }\n ]\n },\n \"qwen/qwq-32b-preview:free\": {\n \"modelName\": \"qwen/qwq-32b-preview:free\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0,\n \"outputPricePerMillion\": 0\n }\n }\n }\n ]\n },\n \"qwen/qwq-32b-preview\": {\n \"modelName\": \"qwen/qwq-32b-preview\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.19999999999999998,\n \"outputPricePerMillion\": 0.19999999999999998\n }\n }\n }\n ]\n },\n \"google/learnlm-1.5-pro-experimental:free\": {\n \"modelName\": \"google/learnlm-1.5-pro-experimental:free\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0,\n \"outputPricePerMillion\": 0\n }\n }\n }\n ]\n },\n \"eva-unit-01/eva-qwen-2.5-72b\": {\n \"modelName\": \"eva-unit-01/eva-qwen-2.5-72b\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.8999999999999999,\n \"outputPricePerMillion\": 1.2\n }\n }\n }\n ]\n },\n \"openai/gpt-4o-2024-11-20\": {\n \"modelName\": \"openai/gpt-4o-2024-11-20\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 2.5,\n \"outputPricePerMillion\": 10\n }\n }\n }\n ]\n },\n \"mistralai/mistral-large-2411\": {\n \"modelName\": \"mistralai/mistral-large-2411\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 2,\n \"outputPricePerMillion\": 6\n }\n }\n }\n ]\n },\n \"mistralai/mistral-large-2407\": {\n \"modelName\": \"mistralai/mistral-large-2407\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 2,\n \"outputPricePerMillion\": 6\n }\n }\n }\n ]\n },\n \"mistralai/pixtral-large-2411\": {\n \"modelName\": \"mistralai/pixtral-large-2411\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 2,\n \"outputPricePerMillion\": 6\n }\n }\n }\n ]\n },\n \"x-ai/grok-vision-beta\": {\n \"modelName\": \"x-ai/grok-vision-beta\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 5,\n \"outputPricePerMillion\": 15\n }\n }\n }\n ]\n },\n \"infermatic/mn-inferor-12b\": {\n \"modelName\": \"infermatic/mn-inferor-12b\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.7999999999999999,\n \"outputPricePerMillion\": 1.2\n }\n }\n }\n ]\n },\n \"qwen/qwen-2.5-coder-32b-instruct:free\": {\n \"modelName\": \"qwen/qwen-2.5-coder-32b-instruct:free\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0,\n \"outputPricePerMillion\": 0\n }\n }\n }\n ]\n },\n \"qwen/qwen-2.5-coder-32b-instruct\": {\n \"modelName\": \"qwen/qwen-2.5-coder-32b-instruct\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.07,\n \"outputPricePerMillion\": 0.15\n }\n }\n }\n ]\n },\n \"raifle/sorcererlm-8x22b\": {\n \"modelName\": \"raifle/sorcererlm-8x22b\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 4.5,\n \"outputPricePerMillion\": 4.5\n }\n }\n }\n ]\n },\n \"eva-unit-01/eva-qwen-2.5-32b\": {\n \"modelName\": \"eva-unit-01/eva-qwen-2.5-32b\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 2.6,\n \"outputPricePerMillion\": 3.4\n }\n }\n }\n ]\n },\n \"thedrummer/unslopnemo-12b\": {\n \"modelName\": \"thedrummer/unslopnemo-12b\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.5,\n \"outputPricePerMillion\": 0.5\n }\n }\n }\n ]\n },\n \"anthropic/claude-3.5-haiku:beta\": {\n \"modelName\": \"anthropic/claude-3.5-haiku:beta\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.7999999999999999,\n \"outputPricePerMillion\": 4\n }\n }\n }\n ]\n },\n \"anthropic/claude-3.5-haiku\": {\n \"modelName\": \"anthropic/claude-3.5-haiku\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.7999999999999999,\n \"outputPricePerMillion\": 4\n }\n }\n }\n ]\n },\n \"anthropic/claude-3.5-haiku-20241022:beta\": {\n \"modelName\": \"anthropic/claude-3.5-haiku-20241022:beta\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.7999999999999999,\n \"outputPricePerMillion\": 4\n }\n }\n }\n ]\n },\n \"anthropic/claude-3.5-haiku-20241022\": {\n \"modelName\": \"anthropic/claude-3.5-haiku-20241022\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.7999999999999999,\n \"outputPricePerMillion\": 4\n }\n }\n }\n ]\n },\n \"neversleep/llama-3.1-lumimaid-70b\": {\n \"modelName\": \"neversleep/llama-3.1-lumimaid-70b\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 1.5,\n \"outputPricePerMillion\": 2.25\n }\n }\n }\n ]\n },\n \"anthracite-org/magnum-v4-72b\": {\n \"modelName\": \"anthracite-org/magnum-v4-72b\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 1.5,\n \"outputPricePerMillion\": 2.25\n }\n }\n }\n ]\n },\n \"anthropic/claude-3.5-sonnet:beta\": {\n \"modelName\": \"anthropic/claude-3.5-sonnet:beta\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 3,\n \"outputPricePerMillion\": 15\n }\n }\n }\n ]\n },\n \"anthropic/claude-3.5-sonnet\": {\n \"modelName\": \"anthropic/claude-3.5-sonnet\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 3,\n \"outputPricePerMillion\": 15\n }\n }\n }\n ]\n },\n \"x-ai/grok-beta\": {\n \"modelName\": \"x-ai/grok-beta\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 5,\n \"outputPricePerMillion\": 15\n }\n }\n }\n ]\n },\n \"mistralai/ministral-8b\": {\n \"modelName\": \"mistralai/ministral-8b\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.09999999999999999,\n \"outputPricePerMillion\": 0.09999999999999999\n }\n }\n }\n ]\n },\n \"mistralai/ministral-3b\": {\n \"modelName\": \"mistralai/ministral-3b\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.04,\n \"outputPricePerMillion\": 0.04\n }\n }\n }\n ]\n },\n \"qwen/qwen-2.5-7b-instruct:free\": {\n \"modelName\": \"qwen/qwen-2.5-7b-instruct:free\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0,\n \"outputPricePerMillion\": 0\n }\n }\n }\n ]\n },\n \"qwen/qwen-2.5-7b-instruct\": {\n \"modelName\": \"qwen/qwen-2.5-7b-instruct\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.049999999999999996,\n \"outputPricePerMillion\": 0.09999999999999999\n }\n }\n }\n ]\n },\n \"nvidia/llama-3.1-nemotron-70b-instruct:free\": {\n \"modelName\": \"nvidia/llama-3.1-nemotron-70b-instruct:free\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0,\n \"outputPricePerMillion\": 0\n }\n }\n }\n ]\n },\n \"nvidia/llama-3.1-nemotron-70b-instruct\": {\n \"modelName\": \"nvidia/llama-3.1-nemotron-70b-instruct\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.12,\n \"outputPricePerMillion\": 0.3\n }\n }\n }\n ]\n },\n \"inflection/inflection-3-productivity\": {\n \"modelName\": \"inflection/inflection-3-productivity\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 2.5,\n \"outputPricePerMillion\": 10\n }\n }\n }\n ]\n },\n \"inflection/inflection-3-pi\": {\n \"modelName\": \"inflection/inflection-3-pi\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 2.5,\n \"outputPricePerMillion\": 10\n }\n }\n }\n ]\n },\n \"google/gemini-flash-1.5-8b\": {\n \"modelName\": \"google/gemini-flash-1.5-8b\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.0375,\n \"outputPricePerMillion\": 0.15\n }\n }\n }\n ]\n },\n \"thedrummer/rocinante-12b\": {\n \"modelName\": \"thedrummer/rocinante-12b\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.25,\n \"outputPricePerMillion\": 0.5\n }\n }\n }\n ]\n },\n \"anthracite-org/magnum-v2-72b\": {\n \"modelName\": \"anthracite-org/magnum-v2-72b\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 3,\n \"outputPricePerMillion\": 3\n }\n }\n }\n ]\n },\n \"liquid/lfm-40b\": {\n \"modelName\": \"liquid/lfm-40b\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.15,\n \"outputPricePerMillion\": 0.15\n }\n }\n }\n ]\n },\n \"meta-llama/llama-3.2-3b-instruct:free\": {\n \"modelName\": \"meta-llama/llama-3.2-3b-instruct:free\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0,\n \"outputPricePerMillion\": 0\n }\n }\n }\n ]\n },\n \"meta-llama/llama-3.2-3b-instruct\": {\n \"modelName\": \"meta-llama/llama-3.2-3b-instruct\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.015,\n \"outputPricePerMillion\": 0.024999999999999998\n }\n }\n }\n ]\n },\n \"meta-llama/llama-3.2-1b-instruct:free\": {\n \"modelName\": \"meta-llama/llama-3.2-1b-instruct:free\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0,\n \"outputPricePerMillion\": 0\n }\n }\n }\n ]\n },\n \"meta-llama/llama-3.2-1b-instruct\": {\n \"modelName\": \"meta-llama/llama-3.2-1b-instruct\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.01,\n \"outputPricePerMillion\": 0.01\n }\n }\n }\n ]\n },\n \"meta-llama/llama-3.2-90b-vision-instruct\": {\n \"modelName\": \"meta-llama/llama-3.2-90b-vision-instruct\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.8999999999999999,\n \"outputPricePerMillion\": 0.8999999999999999\n }\n }\n }\n ]\n },\n \"meta-llama/llama-3.2-11b-vision-instruct:free\": {\n \"modelName\": \"meta-llama/llama-3.2-11b-vision-instruct:free\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0,\n \"outputPricePerMillion\": 0\n }\n }\n }\n ]\n },\n \"meta-llama/llama-3.2-11b-vision-instruct\": {\n \"modelName\": \"meta-llama/llama-3.2-11b-vision-instruct\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.049,\n \"outputPricePerMillion\": 0.049\n }\n }\n }\n ]\n },\n \"qwen/qwen-2.5-72b-instruct:free\": {\n \"modelName\": \"qwen/qwen-2.5-72b-instruct:free\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0,\n \"outputPricePerMillion\": 0\n }\n }\n }\n ]\n },\n \"qwen/qwen-2.5-72b-instruct\": {\n \"modelName\": \"qwen/qwen-2.5-72b-instruct\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.12,\n \"outputPricePerMillion\": 0.39\n }\n }\n }\n ]\n },\n \"qwen/qwen-2.5-vl-72b-instruct\": {\n \"modelName\": \"qwen/qwen-2.5-vl-72b-instruct\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.6,\n \"outputPricePerMillion\": 0.6\n }\n }\n }\n ]\n },\n \"neversleep/llama-3.1-lumimaid-8b\": {\n \"modelName\": \"neversleep/llama-3.1-lumimaid-8b\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.09375,\n \"outputPricePerMillion\": 0.75\n }\n }\n }\n ]\n },\n \"openai/o1-preview\": {\n \"modelName\": \"openai/o1-preview\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 15,\n \"outputPricePerMillion\": 60\n }\n }\n }\n ]\n },\n \"openai/o1-preview-2024-09-12\": {\n \"modelName\": \"openai/o1-preview-2024-09-12\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 15,\n \"outputPricePerMillion\": 60\n }\n }\n }\n ]\n },\n \"openai/o1-mini\": {\n \"modelName\": \"openai/o1-mini\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 1.1,\n \"outputPricePerMillion\": 4.4\n }\n }\n }\n ]\n },\n \"openai/o1-mini-2024-09-12\": {\n \"modelName\": \"openai/o1-mini-2024-09-12\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 1.1,\n \"outputPricePerMillion\": 4.4\n }\n }\n }\n ]\n },\n \"mistralai/pixtral-12b\": {\n \"modelName\": \"mistralai/pixtral-12b\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.09999999999999999,\n \"outputPricePerMillion\": 0.09999999999999999\n }\n }\n }\n ]\n },\n \"cohere/command-r-plus-08-2024\": {\n \"modelName\": \"cohere/command-r-plus-08-2024\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 2.5,\n \"outputPricePerMillion\": 10\n }\n }\n }\n ]\n },\n \"cohere/command-r-08-2024\": {\n \"modelName\": \"cohere/command-r-08-2024\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.15,\n \"outputPricePerMillion\": 0.6\n }\n }\n }\n ]\n },\n \"qwen/qwen-2.5-vl-7b-instruct:free\": {\n \"modelName\": \"qwen/qwen-2.5-vl-7b-instruct:free\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0,\n \"outputPricePerMillion\": 0\n }\n }\n }\n ]\n },\n \"qwen/qwen-2.5-vl-7b-instruct\": {\n \"modelName\": \"qwen/qwen-2.5-vl-7b-instruct\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.19999999999999998,\n \"outputPricePerMillion\": 0.19999999999999998\n }\n }\n }\n ]\n },\n \"sao10k/l3.1-euryale-70b\": {\n \"modelName\": \"sao10k/l3.1-euryale-70b\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.7,\n \"outputPricePerMillion\": 0.7999999999999999\n }\n }\n }\n ]\n },\n \"google/gemini-flash-1.5-8b-exp\": {\n \"modelName\": \"google/gemini-flash-1.5-8b-exp\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0,\n \"outputPricePerMillion\": 0\n }\n }\n }\n ]\n },\n \"ai21/jamba-1-5-mini\": {\n \"modelName\": \"ai21/jamba-1-5-mini\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.19999999999999998,\n \"outputPricePerMillion\": 0.39999999999999997\n }\n }\n }\n ]\n },\n \"ai21/jamba-1-5-large\": {\n \"modelName\": \"ai21/jamba-1-5-large\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 2,\n \"outputPricePerMillion\": 8\n }\n }\n }\n ]\n },\n \"microsoft/phi-3.5-mini-128k-instruct\": {\n \"modelName\": \"microsoft/phi-3.5-mini-128k-instruct\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.09999999999999999,\n \"outputPricePerMillion\": 0.09999999999999999\n }\n }\n }\n ]\n },\n \"nousresearch/hermes-3-llama-3.1-70b\": {\n \"modelName\": \"nousresearch/hermes-3-llama-3.1-70b\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.12,\n \"outputPricePerMillion\": 0.3\n }\n }\n }\n ]\n },\n \"nousresearch/hermes-3-llama-3.1-405b\": {\n \"modelName\": \"nousresearch/hermes-3-llama-3.1-405b\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.7999999999999999,\n \"outputPricePerMillion\": 0.7999999999999999\n }\n }\n }\n ]\n },\n \"openai/chatgpt-4o-latest\": {\n \"modelName\": \"openai/chatgpt-4o-latest\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 5,\n \"outputPricePerMillion\": 15\n }\n }\n }\n ]\n },\n \"sao10k/l3-lunaris-8b\": {\n \"modelName\": \"sao10k/l3-lunaris-8b\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.02,\n \"outputPricePerMillion\": 0.049999999999999996\n }\n }\n }\n ]\n },\n \"aetherwiing/mn-starcannon-12b\": {\n \"modelName\": \"aetherwiing/mn-starcannon-12b\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.7999999999999999,\n \"outputPricePerMillion\": 1.2\n }\n }\n }\n ]\n },\n \"openai/gpt-4o-2024-08-06\": {\n \"modelName\": \"openai/gpt-4o-2024-08-06\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 2.5,\n \"outputPricePerMillion\": 10\n }\n }\n }\n ]\n },\n \"meta-llama/llama-3.1-405b:free\": {\n \"modelName\": \"meta-llama/llama-3.1-405b:free\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0,\n \"outputPricePerMillion\": 0\n }\n }\n }\n ]\n },\n \"meta-llama/llama-3.1-405b\": {\n \"modelName\": \"meta-llama/llama-3.1-405b\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 2,\n \"outputPricePerMillion\": 2\n }\n }\n }\n ]\n },\n \"nothingiisreal/mn-celeste-12b\": {\n \"modelName\": \"nothingiisreal/mn-celeste-12b\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.7999999999999999,\n \"outputPricePerMillion\": 1.2\n }\n }\n }\n ]\n },\n \"perplexity/llama-3.1-sonar-small-128k-online\": {\n \"modelName\": \"perplexity/llama-3.1-sonar-small-128k-online\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.19999999999999998,\n \"outputPricePerMillion\": 0.19999999999999998\n }\n }\n }\n ]\n },\n \"perplexity/llama-3.1-sonar-large-128k-online\": {\n \"modelName\": \"perplexity/llama-3.1-sonar-large-128k-online\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 1,\n \"outputPricePerMillion\": 1\n }\n }\n }\n ]\n },\n \"meta-llama/llama-3.1-8b-instruct:free\": {\n \"modelName\": \"meta-llama/llama-3.1-8b-instruct:free\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0,\n \"outputPricePerMillion\": 0\n }\n }\n }\n ]\n },\n \"meta-llama/llama-3.1-8b-instruct\": {\n \"modelName\": \"meta-llama/llama-3.1-8b-instruct\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.02,\n \"outputPricePerMillion\": 0.03\n }\n }\n }\n ]\n },\n \"meta-llama/llama-3.1-405b-instruct\": {\n \"modelName\": \"meta-llama/llama-3.1-405b-instruct\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.7999999999999999,\n \"outputPricePerMillion\": 0.7999999999999999\n }\n }\n }\n ]\n },\n \"meta-llama/llama-3.1-70b-instruct\": {\n \"modelName\": \"meta-llama/llama-3.1-70b-instruct\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.09999999999999999,\n \"outputPricePerMillion\": 0.28\n }\n }\n }\n ]\n },\n \"mistralai/codestral-mamba\": {\n \"modelName\": \"mistralai/codestral-mamba\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.25,\n \"outputPricePerMillion\": 0.25\n }\n }\n }\n ]\n },\n \"mistralai/mistral-nemo:free\": {\n \"modelName\": \"mistralai/mistral-nemo:free\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0,\n \"outputPricePerMillion\": 0\n }\n }\n }\n ]\n },\n \"mistralai/mistral-nemo\": {\n \"modelName\": \"mistralai/mistral-nemo\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.03,\n \"outputPricePerMillion\": 0.07\n }\n }\n }\n ]\n },\n \"openai/gpt-4o-mini\": {\n \"modelName\": \"openai/gpt-4o-mini\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.15,\n \"outputPricePerMillion\": 0.6\n }\n }\n }\n ]\n },\n \"openai/gpt-4o-mini-2024-07-18\": {\n \"modelName\": \"openai/gpt-4o-mini-2024-07-18\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.15,\n \"outputPricePerMillion\": 0.6\n }\n }\n }\n ]\n },\n \"google/gemma-2-27b-it\": {\n \"modelName\": \"google/gemma-2-27b-it\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.7999999999999999,\n \"outputPricePerMillion\": 0.7999999999999999\n }\n }\n }\n ]\n },\n \"alpindale/magnum-72b\": {\n \"modelName\": \"alpindale/magnum-72b\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 4,\n \"outputPricePerMillion\": 6\n }\n }\n }\n ]\n },\n \"google/gemma-2-9b-it:free\": {\n \"modelName\": \"google/gemma-2-9b-it:free\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0,\n \"outputPricePerMillion\": 0\n }\n }\n }\n ]\n },\n \"google/gemma-2-9b-it\": {\n \"modelName\": \"google/gemma-2-9b-it\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.07,\n \"outputPricePerMillion\": 0.07\n }\n }\n }\n ]\n },\n \"01-ai/yi-large\": {\n \"modelName\": \"01-ai/yi-large\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 3,\n \"outputPricePerMillion\": 3\n }\n }\n }\n ]\n },\n \"ai21/jamba-instruct\": {\n \"modelName\": \"ai21/jamba-instruct\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.5,\n \"outputPricePerMillion\": 0.7\n }\n }\n }\n ]\n },\n \"anthropic/claude-3.5-sonnet-20240620:beta\": {\n \"modelName\": \"anthropic/claude-3.5-sonnet-20240620:beta\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 3,\n \"outputPricePerMillion\": 15\n }\n }\n }\n ]\n },\n \"anthropic/claude-3.5-sonnet-20240620\": {\n \"modelName\": \"anthropic/claude-3.5-sonnet-20240620\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 3,\n \"outputPricePerMillion\": 15\n }\n }\n }\n ]\n },\n \"sao10k/l3-euryale-70b\": {\n \"modelName\": \"sao10k/l3-euryale-70b\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 1.48,\n \"outputPricePerMillion\": 1.48\n }\n }\n }\n ]\n },\n \"cognitivecomputations/dolphin-mixtral-8x22b\": {\n \"modelName\": \"cognitivecomputations/dolphin-mixtral-8x22b\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.8999999999999999,\n \"outputPricePerMillion\": 0.8999999999999999\n }\n }\n }\n ]\n },\n \"qwen/qwen-2-72b-instruct\": {\n \"modelName\": \"qwen/qwen-2-72b-instruct\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.8999999999999999,\n \"outputPricePerMillion\": 0.8999999999999999\n }\n }\n }\n ]\n },\n \"mistralai/mistral-7b-instruct:free\": {\n \"modelName\": \"mistralai/mistral-7b-instruct:free\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0,\n \"outputPricePerMillion\": 0\n }\n }\n }\n ]\n },\n \"mistralai/mistral-7b-instruct\": {\n \"modelName\": \"mistralai/mistral-7b-instruct\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.029,\n \"outputPricePerMillion\": 0.055\n }\n }\n }\n ]\n },\n \"mistralai/mistral-7b-instruct-v0.3\": {\n \"modelName\": \"mistralai/mistral-7b-instruct-v0.3\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.029,\n \"outputPricePerMillion\": 0.055\n }\n }\n }\n ]\n },\n \"nousresearch/hermes-2-pro-llama-3-8b\": {\n \"modelName\": \"nousresearch/hermes-2-pro-llama-3-8b\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.024999999999999998,\n \"outputPricePerMillion\": 0.04\n }\n }\n }\n ]\n },\n \"microsoft/phi-3-mini-128k-instruct\": {\n \"modelName\": \"microsoft/phi-3-mini-128k-instruct\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.09999999999999999,\n \"outputPricePerMillion\": 0.09999999999999999\n }\n }\n }\n ]\n },\n \"microsoft/phi-3-medium-128k-instruct\": {\n \"modelName\": \"microsoft/phi-3-medium-128k-instruct\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 1,\n \"outputPricePerMillion\": 1\n }\n }\n }\n ]\n },\n \"neversleep/llama-3-lumimaid-70b\": {\n \"modelName\": \"neversleep/llama-3-lumimaid-70b\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 4,\n \"outputPricePerMillion\": 6\n }\n }\n }\n ]\n },\n \"google/gemini-flash-1.5\": {\n \"modelName\": \"google/gemini-flash-1.5\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.075,\n \"outputPricePerMillion\": 0.3\n }\n }\n }\n ]\n },\n \"openai/gpt-4o\": {\n \"modelName\": \"openai/gpt-4o\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 2.5,\n \"outputPricePerMillion\": 10\n }\n }\n }\n ]\n },\n \"openai/gpt-4o:extended\": {\n \"modelName\": \"openai/gpt-4o:extended\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 6,\n \"outputPricePerMillion\": 18\n }\n }\n }\n ]\n },\n \"meta-llama/llama-guard-2-8b\": {\n \"modelName\": \"meta-llama/llama-guard-2-8b\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.19999999999999998,\n \"outputPricePerMillion\": 0.19999999999999998\n }\n }\n }\n ]\n },\n \"openai/gpt-4o-2024-05-13\": {\n \"modelName\": \"openai/gpt-4o-2024-05-13\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 5,\n \"outputPricePerMillion\": 15\n }\n }\n }\n ]\n },\n \"neversleep/llama-3-lumimaid-8b:extended\": {\n \"modelName\": \"neversleep/llama-3-lumimaid-8b:extended\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.09375,\n \"outputPricePerMillion\": 0.75\n }\n }\n }\n ]\n },\n \"neversleep/llama-3-lumimaid-8b\": {\n \"modelName\": \"neversleep/llama-3-lumimaid-8b\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.09375,\n \"outputPricePerMillion\": 0.75\n }\n }\n }\n ]\n },\n \"sao10k/fimbulvetr-11b-v2\": {\n \"modelName\": \"sao10k/fimbulvetr-11b-v2\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.7999999999999999,\n \"outputPricePerMillion\": 1.2\n }\n }\n }\n ]\n },\n \"meta-llama/llama-3-8b-instruct\": {\n \"modelName\": \"meta-llama/llama-3-8b-instruct\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.03,\n \"outputPricePerMillion\": 0.06\n }\n }\n }\n ]\n },\n \"meta-llama/llama-3-70b-instruct\": {\n \"modelName\": \"meta-llama/llama-3-70b-instruct\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.3,\n \"outputPricePerMillion\": 0.39999999999999997\n }\n }\n }\n ]\n },\n \"mistralai/mixtral-8x22b-instruct\": {\n \"modelName\": \"mistralai/mixtral-8x22b-instruct\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.8999999999999999,\n \"outputPricePerMillion\": 0.8999999999999999\n }\n }\n }\n ]\n },\n \"microsoft/wizardlm-2-8x22b\": {\n \"modelName\": \"microsoft/wizardlm-2-8x22b\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.5,\n \"outputPricePerMillion\": 0.5\n }\n }\n }\n ]\n },\n \"microsoft/wizardlm-2-7b\": {\n \"modelName\": \"microsoft/wizardlm-2-7b\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.07,\n \"outputPricePerMillion\": 0.07\n }\n }\n }\n ]\n },\n \"google/gemini-pro-1.5\": {\n \"modelName\": \"google/gemini-pro-1.5\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 1.25,\n \"outputPricePerMillion\": 5\n }\n }\n }\n ]\n },\n \"openai/gpt-4-turbo\": {\n \"modelName\": \"openai/gpt-4-turbo\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 10,\n \"outputPricePerMillion\": 30\n }\n }\n }\n ]\n },\n \"cohere/command-r-plus\": {\n \"modelName\": \"cohere/command-r-plus\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 3,\n \"outputPricePerMillion\": 15\n }\n }\n }\n ]\n },\n \"cohere/command-r-plus-04-2024\": {\n \"modelName\": \"cohere/command-r-plus-04-2024\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 3,\n \"outputPricePerMillion\": 15\n }\n }\n }\n ]\n },\n \"sophosympatheia/midnight-rose-70b\": {\n \"modelName\": \"sophosympatheia/midnight-rose-70b\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.7999999999999999,\n \"outputPricePerMillion\": 0.7999999999999999\n }\n }\n }\n ]\n },\n \"cohere/command\": {\n \"modelName\": \"cohere/command\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 1,\n \"outputPricePerMillion\": 2\n }\n }\n }\n ]\n },\n \"cohere/command-r\": {\n \"modelName\": \"cohere/command-r\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.5,\n \"outputPricePerMillion\": 1.5\n }\n }\n }\n ]\n },\n \"anthropic/claude-3-haiku:beta\": {\n \"modelName\": \"anthropic/claude-3-haiku:beta\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.25,\n \"outputPricePerMillion\": 1.25\n }\n }\n }\n ]\n },\n \"anthropic/claude-3-haiku\": {\n \"modelName\": \"anthropic/claude-3-haiku\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.25,\n \"outputPricePerMillion\": 1.25\n }\n }\n }\n ]\n },\n \"anthropic/claude-3-opus:beta\": {\n \"modelName\": \"anthropic/claude-3-opus:beta\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 15,\n \"outputPricePerMillion\": 75\n }\n }\n }\n ]\n },\n \"anthropic/claude-3-opus\": {\n \"modelName\": \"anthropic/claude-3-opus\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 15,\n \"outputPricePerMillion\": 75\n }\n }\n }\n ]\n },\n \"anthropic/claude-3-sonnet:beta\": {\n \"modelName\": \"anthropic/claude-3-sonnet:beta\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 3,\n \"outputPricePerMillion\": 15\n }\n }\n }\n ]\n },\n \"anthropic/claude-3-sonnet\": {\n \"modelName\": \"anthropic/claude-3-sonnet\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 3,\n \"outputPricePerMillion\": 15\n }\n }\n }\n ]\n },\n \"cohere/command-r-03-2024\": {\n \"modelName\": \"cohere/command-r-03-2024\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.5,\n \"outputPricePerMillion\": 1.5\n }\n }\n }\n ]\n },\n \"mistralai/mistral-large\": {\n \"modelName\": \"mistralai/mistral-large\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 2,\n \"outputPricePerMillion\": 6\n }\n }\n }\n ]\n },\n \"openai/gpt-3.5-turbo-0613\": {\n \"modelName\": \"openai/gpt-3.5-turbo-0613\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 1,\n \"outputPricePerMillion\": 2\n }\n }\n }\n ]\n },\n \"openai/gpt-4-turbo-preview\": {\n \"modelName\": \"openai/gpt-4-turbo-preview\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 10,\n \"outputPricePerMillion\": 30\n }\n }\n }\n ]\n },\n \"nousresearch/nous-hermes-2-mixtral-8x7b-dpo\": {\n \"modelName\": \"nousresearch/nous-hermes-2-mixtral-8x7b-dpo\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.6,\n \"outputPricePerMillion\": 0.6\n }\n }\n }\n ]\n },\n \"mistralai/mistral-medium\": {\n \"modelName\": \"mistralai/mistral-medium\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 2.75,\n \"outputPricePerMillion\": 8.1\n }\n }\n }\n ]\n },\n \"mistralai/mistral-small\": {\n \"modelName\": \"mistralai/mistral-small\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.19999999999999998,\n \"outputPricePerMillion\": 0.6\n }\n }\n }\n ]\n },\n \"mistralai/mistral-tiny\": {\n \"modelName\": \"mistralai/mistral-tiny\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.25,\n \"outputPricePerMillion\": 0.25\n }\n }\n }\n ]\n },\n \"mistralai/mistral-7b-instruct-v0.2\": {\n \"modelName\": \"mistralai/mistral-7b-instruct-v0.2\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.19999999999999998,\n \"outputPricePerMillion\": 0.19999999999999998\n }\n }\n }\n ]\n },\n \"cognitivecomputations/dolphin-mixtral-8x7b\": {\n \"modelName\": \"cognitivecomputations/dolphin-mixtral-8x7b\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.5,\n \"outputPricePerMillion\": 0.5\n }\n }\n }\n ]\n },\n \"google/gemini-pro-vision\": {\n \"modelName\": \"google/gemini-pro-vision\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.5,\n \"outputPricePerMillion\": 1.5\n }\n }\n }\n ]\n },\n \"mistralai/mixtral-8x7b-instruct\": {\n \"modelName\": \"mistralai/mixtral-8x7b-instruct\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.24,\n \"outputPricePerMillion\": 0.24\n }\n }\n }\n ]\n },\n \"openchat/openchat-7b\": {\n \"modelName\": \"openchat/openchat-7b\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.07,\n \"outputPricePerMillion\": 0.07\n }\n }\n }\n ]\n },\n \"neversleep/noromaid-20b\": {\n \"modelName\": \"neversleep/noromaid-20b\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.75,\n \"outputPricePerMillion\": 1.5\n }\n }\n }\n ]\n },\n \"anthropic/claude-2.1:beta\": {\n \"modelName\": \"anthropic/claude-2.1:beta\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 8,\n \"outputPricePerMillion\": 24\n }\n }\n }\n ]\n },\n \"anthropic/claude-2.1\": {\n \"modelName\": \"anthropic/claude-2.1\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 8,\n \"outputPricePerMillion\": 24\n }\n }\n }\n ]\n },\n \"anthropic/claude-2:beta\": {\n \"modelName\": \"anthropic/claude-2:beta\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 8,\n \"outputPricePerMillion\": 24\n }\n }\n }\n ]\n },\n \"anthropic/claude-2\": {\n \"modelName\": \"anthropic/claude-2\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 8,\n \"outputPricePerMillion\": 24\n }\n }\n }\n ]\n },\n \"undi95/toppy-m-7b\": {\n \"modelName\": \"undi95/toppy-m-7b\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.07,\n \"outputPricePerMillion\": 0.07\n }\n }\n }\n ]\n },\n \"alpindale/goliath-120b\": {\n \"modelName\": \"alpindale/goliath-120b\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 6.5625,\n \"outputPricePerMillion\": 9.375\n }\n }\n }\n ]\n },\n \"openrouter/auto\": {\n \"modelName\": \"openrouter/auto\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": -1000000,\n \"outputPricePerMillion\": -1000000\n }\n }\n }\n ]\n },\n \"openai/gpt-3.5-turbo-1106\": {\n \"modelName\": \"openai/gpt-3.5-turbo-1106\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 1,\n \"outputPricePerMillion\": 2\n }\n }\n }\n ]\n },\n \"openai/gpt-4-1106-preview\": {\n \"modelName\": \"openai/gpt-4-1106-preview\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 10,\n \"outputPricePerMillion\": 30\n }\n }\n }\n ]\n },\n \"google/palm-2-chat-bison-32k\": {\n \"modelName\": \"google/palm-2-chat-bison-32k\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 1,\n \"outputPricePerMillion\": 2\n }\n }\n }\n ]\n },\n \"google/palm-2-codechat-bison-32k\": {\n \"modelName\": \"google/palm-2-codechat-bison-32k\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 1,\n \"outputPricePerMillion\": 2\n }\n }\n }\n ]\n },\n \"jondurbin/airoboros-l2-70b\": {\n \"modelName\": \"jondurbin/airoboros-l2-70b\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.5,\n \"outputPricePerMillion\": 0.5\n }\n }\n }\n ]\n },\n \"openai/gpt-3.5-turbo-instruct\": {\n \"modelName\": \"openai/gpt-3.5-turbo-instruct\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 1.5,\n \"outputPricePerMillion\": 2\n }\n }\n }\n ]\n },\n \"mistralai/mistral-7b-instruct-v0.1\": {\n \"modelName\": \"mistralai/mistral-7b-instruct-v0.1\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.19999999999999998,\n \"outputPricePerMillion\": 0.19999999999999998\n }\n }\n }\n ]\n },\n \"pygmalionai/mythalion-13b\": {\n \"modelName\": \"pygmalionai/mythalion-13b\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.5625,\n \"outputPricePerMillion\": 1.125\n }\n }\n }\n ]\n },\n \"openai/gpt-3.5-turbo-16k\": {\n \"modelName\": \"openai/gpt-3.5-turbo-16k\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 3,\n \"outputPricePerMillion\": 4\n }\n }\n }\n ]\n },\n \"openai/gpt-4-32k\": {\n \"modelName\": \"openai/gpt-4-32k\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 60,\n \"outputPricePerMillion\": 120\n }\n }\n }\n ]\n },\n \"openai/gpt-4-32k-0314\": {\n \"modelName\": \"openai/gpt-4-32k-0314\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 60,\n \"outputPricePerMillion\": 120\n }\n }\n }\n ]\n },\n \"nousresearch/nous-hermes-llama2-13b\": {\n \"modelName\": \"nousresearch/nous-hermes-llama2-13b\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.18,\n \"outputPricePerMillion\": 0.18\n }\n }\n }\n ]\n },\n \"mancer/weaver\": {\n \"modelName\": \"mancer/weaver\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 1.125,\n \"outputPricePerMillion\": 1.125\n }\n }\n }\n ]\n },\n \"huggingfaceh4/zephyr-7b-beta:free\": {\n \"modelName\": \"huggingfaceh4/zephyr-7b-beta:free\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0,\n \"outputPricePerMillion\": 0\n }\n }\n }\n ]\n },\n \"anthropic/claude-2.0:beta\": {\n \"modelName\": \"anthropic/claude-2.0:beta\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 8,\n \"outputPricePerMillion\": 24\n }\n }\n }\n ]\n },\n \"anthropic/claude-2.0\": {\n \"modelName\": \"anthropic/claude-2.0\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 8,\n \"outputPricePerMillion\": 24\n }\n }\n }\n ]\n },\n \"undi95/remm-slerp-l2-13b\": {\n \"modelName\": \"undi95/remm-slerp-l2-13b\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.5625,\n \"outputPricePerMillion\": 1.125\n }\n }\n }\n ]\n },\n \"google/palm-2-chat-bison\": {\n \"modelName\": \"google/palm-2-chat-bison\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 1,\n \"outputPricePerMillion\": 2\n }\n }\n }\n ]\n },\n \"google/palm-2-codechat-bison\": {\n \"modelName\": \"google/palm-2-codechat-bison\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 1,\n \"outputPricePerMillion\": 2\n }\n }\n }\n ]\n },\n \"gryphe/mythomax-l2-13b\": {\n \"modelName\": \"gryphe/mythomax-l2-13b\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.065,\n \"outputPricePerMillion\": 0.065\n }\n }\n }\n ]\n },\n \"meta-llama/llama-2-13b-chat\": {\n \"modelName\": \"meta-llama/llama-2-13b-chat\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.22,\n \"outputPricePerMillion\": 0.22\n }\n }\n }\n ]\n },\n \"meta-llama/llama-2-70b-chat\": {\n \"modelName\": \"meta-llama/llama-2-70b-chat\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.8999999999999999,\n \"outputPricePerMillion\": 0.8999999999999999\n }\n }\n }\n ]\n },\n \"openai/gpt-3.5-turbo\": {\n \"modelName\": \"openai/gpt-3.5-turbo\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.5,\n \"outputPricePerMillion\": 1.5\n }\n }\n }\n ]\n },\n \"openai/gpt-3.5-turbo-0125\": {\n \"modelName\": \"openai/gpt-3.5-turbo-0125\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.5,\n \"outputPricePerMillion\": 1.5\n }\n }\n }\n ]\n },\n \"openai/gpt-4\": {\n \"modelName\": \"openai/gpt-4\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 30,\n \"outputPricePerMillion\": 60\n }\n }\n }\n ]\n },\n \"openai/gpt-4-0314\": {\n \"modelName\": \"openai/gpt-4-0314\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 30,\n \"outputPricePerMillion\": 60\n }\n }\n }\n ]\n }\n}\n","import { z } from \"zod\";\n\nimport { AssistantRoleLiteral, SystemRoleLiteral, ToolRoleLiteral, UserRoleLiteral } from \"@adaline/types\";\n\nconst OpenRouterChatModelRoles = z.enum([SystemRoleLiteral, UserRoleLiteral, AssistantRoleLiteral, ToolRoleLiteral]);\n\nconst OpenRouterChatModelRolesMap = {\n system: SystemRoleLiteral,\n user: UserRoleLiteral,\n assistant: AssistantRoleLiteral,\n tool: ToolRoleLiteral,\n} as const;\n\nexport { OpenRouterChatModelRoles, OpenRouterChatModelRolesMap };\n","import { z } from \"zod\";\n\nimport { ChatModelSchemaType } from \"@adaline/provider\";\nimport { ImageModalityLiteral, TextModalityLiteral, ToolCallModalityLiteral, ToolResponseModalityLiteral } from \"@adaline/types\";\n\nconst OpenRouterChatModelModalities: ChatModelSchemaType[\"modalities\"] = [\n TextModalityLiteral,\n ImageModalityLiteral,\n ToolCallModalityLiteral,\n ToolResponseModalityLiteral,\n];\n\nconst OpenRouterChatModelModalitiesEnum = z.enum([\n TextModalityLiteral,\n ImageModalityLiteral,\n ToolCallModalityLiteral,\n ToolResponseModalityLiteral,\n]);\n\nexport { OpenRouterChatModelModalitiesEnum, OpenRouterChatModelModalities };\n","import { z } from \"zod\";\n\nconst OpenRouterBaseLogProb = z.object({\n token: z.string(),\n logprob: z.number(),\n bytes: z.array(z.number()).nullable(),\n});\n\nconst OpenRouterLogProb = z\n .object({\n content: z\n .array(\n OpenRouterBaseLogProb.extend({\n top_logprobs: z.array(OpenRouterBaseLogProb),\n })\n )\n .nullable(),\n refusal: z\n .array(\n OpenRouterBaseLogProb.extend({\n top_logprobs: z.array(OpenRouterBaseLogProb),\n })\n )\n .nullable(),\n })\n .nullable();\n\nconst OpenRouterToolCallsCompleteChatResponse = z.array(\n z.object({\n id: z.string().min(1),\n type: z.enum([\"function\"]),\n function: z.object({\n name: z.string(),\n arguments: z.string(),\n }),\n })\n);\n\nconst OpenRouterCompleteChatResponse = z.object({\n id: z.string(),\n object: z.string(),\n created: z.number(),\n model: z.string(),\n system_fingerprint: z.string().nullable().optional(),\n choices: z.array(\n z.object({\n index: z.number(),\n message: z.object({\n role: z.string(),\n content: z.string().nullable().optional(),\n tool_calls: OpenRouterToolCallsCompleteChatResponse.optional(),\n refusal: z.string().nullable().optional(),\n }),\n logprobs: OpenRouterLogProb.optional(),\n finish_reason: z.string().nullable().optional(),\n })\n ),\n usage: z\n .object({\n prompt_tokens: z.number(),\n completion_tokens: z.number(),\n total_tokens: z.number(),\n })\n .nullable()\n .optional(),\n});\ntype OpenRouterCompleteChatResponseType = z.infer<typeof OpenRouterCompleteChatResponse>;\n\nconst OpenRouterToolCallsStreamChatResponse = z.array(\n z.object({\n index: z.number().int(),\n id: z.string().min(1).optional(),\n type: z.enum([\"function\"]).optional(),\n function: z\n .object({\n name: z.string().min(1).optional(),\n arguments: z.string().optional(),\n })\n .optional(),\n })\n);\n\nconst OpenRouterStreamChatResponse = z.object({\n id: z.string(),\n object: z.string(),\n created: z.number(),\n model: z.string(),\n system_fingerprint: z.string().nullable().optional(),\n choices: z.array(\n z.object({\n index: z.number(),\n delta: z\n .object({\n content: z.string().nullable().optional(),\n tool_calls: OpenRouterToolCallsStreamChatResponse.optional(),\n refusal: z.string().nullable().optional(),\n })\n .or(z.object({})),\n logprobs: OpenRouterLogProb,\n finish_reason: z.string().nullable().optional(),\n })\n ),\n usage: z\n .object({\n prompt_tokens: z.number(),\n completion_tokens: z.number(),\n total_tokens: z.number(),\n })\n .nullable()\n .optional(),\n});\ntype OpenRouterStreamChatResponseType = z.infer<typeof OpenRouterStreamChatResponse>;\n\nexport {\n OpenRouterStreamChatResponse,\n OpenRouterCompleteChatResponse,\n OpenRouterToolCallsStreamChatResponse,\n OpenRouterToolCallsCompleteChatResponse,\n type OpenRouterStreamChatResponseType,\n type OpenRouterCompleteChatResponseType,\n};\n","import { z } from \"zod\";\n\nconst OpenRouterChatRequestTool = z.object({\n type: z.literal(\"function\"),\n function: z.object({\n name: z.string().min(1),\n description: z.string().min(1).optional(),\n strict: z.boolean().optional(),\n parameters: z.any(),\n }),\n});\ntype OpenRouterChatRequestToolType = z.infer<typeof OpenRouterChatRequestTool>;\n\nconst OpenRouterChatRequestToolChoiceEnum = z.enum([\"none\", \"auto\", \"required\"]);\ntype OpenRouterChatRequestToolChoiceEnumType = z.infer<typeof OpenRouterChatRequestToolChoiceEnum>;\n\nconst OpenRouterChatRequestToolChoiceFunction = z.object({\n type: z.literal(\"function\"),\n function: z.object({\n name: z.string().min(1),\n }),\n});\ntype OpenRouterChatRequestToolChoiceFunctionType = z.infer<typeof OpenRouterChatRequestToolChoiceFunction>;\n\nconst OpenRouterChatRequestResponseFormat = z\n .object({\n type: z.enum([\"text\", \"json_object\"]),\n })\n .or(\n z.object({\n type: z.literal(\"json_schema\"),\n json_schema: z.object({\n name: z.string().min(1),\n description: z.string().min(1).optional(),\n strict: z.boolean().optional(),\n schema: z.any(),\n }),\n })\n );\ntype OpenRouterChatRequestResponseFormatType = z.infer<typeof OpenRouterChatRequestResponseFormat>;\n\nconst OpenRouterChatRequestTextContent = z.object({\n text: z.string().min(1),\n type: z.literal(\"text\"),\n});\ntype OpenRouterChatRequestTextContentType = z.infer<typeof OpenRouterChatRequestTextContent>;\n\nconst OpenRouterChatRequestImageContent = z.object({\n type: z.literal(\"image_url\"),\n image_url: z.object({\n url: z.string().url().min(1),\n detail: z.enum([\"low\", \"high\", \"auto\"]).optional(),\n }),\n});\ntype OpenRouterChatRequestImageContentType = z.infer<typeof OpenRouterChatRequestImageContent>;\n\nconst OpenRouterChatRequestToolCallContent = z.object({\n id: z.string().min(1),\n type: z.literal(\"function\"),\n function: z.object({\n name: z.string().min(1),\n arguments: z.string().min(1),\n }),\n});\ntype OpenRouterChatRequestToolCallContentType = z.infer<typeof OpenRouterChatRequestToolCallContent>;\n\nconst OpenRouterChatRequestSystemMessage = z.object({\n role: z.literal(\"system\"),\n content: z.string().min(1).or(z.array(OpenRouterChatRequestTextContent).min(1)),\n});\ntype OpenRouterChatRequestSystemMessageType = z.infer<typeof OpenRouterChatRequestSystemMessage>;\n\nconst OpenRouterChatRequestUserMessage = z.object({\n role: z.literal(\"user\"),\n content: z\n .string()\n .min(1)\n .or(z.array(z.union([OpenRouterChatRequestTextContent, OpenRouterChatRequestImageContent])).min(1)),\n});\ntype OpenRouterChatRequestUserMessageType = z.infer<typeof OpenRouterChatRequestUserMessage>;\n\nconst OpenRouterChatRequestAssistantMessage = z.object({\n role: z.literal(\"assistant\"),\n content: z.string().min(1).or(z.array(OpenRouterChatRequestTextContent).min(1)).optional(),\n tool_calls: z.array(OpenRouterChatRequestToolCallContent).min(1).optional(),\n});\ntype OpenRouterChatRequestAssistantMessageType = z.infer<typeof OpenRouterChatRequestAssistantMessage>;\n\nconst OpenRouterChatRequestToolMessage = z.object({\n role: z.literal(\"tool\"),\n tool_call_id: z.string().min(1),\n content: z.string().min(1),\n});\ntype OpenRouterChatRequestToolMessageType = z.infer<typeof OpenRouterChatRequestToolMessage>;\n\nconst OpenRouterChatRequestMessage = z.union([\n OpenRouterChatRequestSystemMessage,\n OpenRouterChatRequestUserMessage,\n OpenRouterChatRequestAssistantMessage,\n OpenRouterChatRequestToolMessage,\n]);\ntype OpenRouterChatRequestMessageType = z.infer<typeof OpenRouterChatRequestMessage>;\n\nconst OpenRouterChatRequest = z.object({\n model: z.string().min(1).optional(),\n messages: z.array(OpenRouterChatRequestMessage).min(1),\n frequency_penalty: z.number().min(-2).max(2).nullable().optional(),\n logprobs: z.boolean().nullable().optional(),\n top_logprobs: z.number().min(0).max(20).nullable().optional(),\n max_tokens: z.number().min(0).nullable().optional(),\n presence_penalty: z.number().min(-2).max(2).nullable().optional(),\n repetition_penalty: z.number().min(0).max(2).nullable().optional(),\n response_format: OpenRouterChatRequestResponseFormat.optional(),\n seed: z.number().nullable().optional(),\n stop: z.string().or(z.array(z.string()).max(4)).nullable().optional(),\n top_a: z.number().min(0).max(1).nullable().optional(),\n temperature: z.number().min(0).max(2).nullable().optional(),\n top_p: z.number().min(0).max(1).nullable().optional(),\n top_k: z.number().min(0).max(100).nullable().optional(),\n min_p: z.number().min(0).max(1).nullable().optional(),\n tools: z.array(OpenRouterChatRequestTool).optional(),\n tool_choice: OpenRouterChatRequestToolChoiceEnum.or(OpenRouterChatRequestToolChoiceFunction).optional(),\n});\ntype OpenRouterChatRequestType = z.infer<typeof OpenRouterChatRequest>;\n\nexport {\n OpenRouterChatRequest,\n OpenRouterChatRequestMessage,\n OpenRouterChatRequestSystemMessage,\n OpenRouterChatRequestUserMessage,\n OpenRouterChatRequestAssistantMessage,\n OpenRouterChatRequestToolMessage,\n OpenRouterChatRequestTextContent,\n OpenRouterChatRequestImageContent,\n OpenRouterChatRequestToolCallContent,\n OpenRouterChatRequestTool,\n OpenRouterChatRequestToolChoiceEnum,\n OpenRouterChatRequestToolChoiceFunction,\n OpenRouterChatRequestResponseFormat,\n type OpenRouterChatRequestType,\n type OpenRouterChatRequestMessageType,\n type OpenRouterChatRequestSystemMessageType,\n type OpenRouterChatRequestUserMessageType,\n type OpenRouterChatRequestAssistantMessageType,\n type OpenRouterChatRequestToolMessageType,\n type OpenRouterChatRequestTextContentType,\n type OpenRouterChatRequestImageContentType,\n type OpenRouterChatRequestToolCallContentType,\n type OpenRouterChatRequestToolType,\n type OpenRouterChatRequestToolChoiceEnumType,\n type OpenRouterChatRequestToolChoiceFunctionType,\n type OpenRouterChatRequestResponseFormatType,\n};\n","import { z } from \"zod\";\n\nimport {\n ChatModelSchemaType,\n ChatModelV1,\n getMimeTypeFromBase64,\n HeadersType,\n InvalidConfigError,\n InvalidMessagesError,\n InvalidModelRequestError,\n InvalidToolsError,\n ModelResponseError,\n ParamsType,\n removeUndefinedEntries,\n SelectStringConfigItemDefType,\n UrlType,\n urlWithoutTrailingSlash,\n} from \"@adaline/provider\";\nimport {\n AssistantRoleLiteral,\n Base64ImageContentTypeLiteral,\n Base64ImageContentValueType,\n ChatLogProbsType,\n ChatModelPriceType,\n ChatResponseType,\n ChatUsageType,\n Config,\n ConfigType,\n ContentType,\n createPartialTextMessage,\n createPartialToolCallMessage,\n createTextContent,\n createToolCallContent,\n ImageModalityLiteral,\n Message,\n MessageType,\n PartialChatResponseType,\n SystemRoleLiteral,\n TextModalityLiteral,\n Tool,\n ToolCallContentType,\n ToolCallModalityLiteral,\n ToolResponseContentType,\n ToolResponseModalityLiteral,\n ToolRoleLiteral,\n ToolType,\n UrlImageContentTypeLiteral,\n UserRoleLiteral,\n} from \"@adaline/types\";\n\nimport { OpenRouter } from \"../../provider/provider.open-router\";\nimport pricingData from \"../pricing.json\";\nimport {\n OpenRouterChatRequest,\n OpenRouterChatRequestImageContentType,\n OpenRouterChatRequestTextContentType,\n OpenRouterChatRequestToolType,\n OpenRouterChatRequestType,\n OpenRouterCompleteChatResponse,\n OpenRouterCompleteChatResponseType,\n OpenRouterStreamChatResponse,\n OpenRouterStreamChatResponseType,\n} from \"./types\";\n\nconst BaseChatModelOptions = z.object({\n modelName: z.string(),\n apiKey: z.string(),\n openRouterReferer: z.string().optional(),\n openRouterTitle: z.string().optional(),\n});\ntype BaseChatModelOptionsType = z.infer<typeof BaseChatModelOptions>;\n\nclass BaseChatModel implements ChatModelV1<ChatModelSchemaType> {\n readonly version = \"v1\" as const;\n modelSchema: ChatModelSchemaType;\n\n private readonly modelName: string;\n private readonly apiKey: string;\n private readonly baseUrl: string;\n private readonly streamChatUrl: string;\n private readonly completeChatUrl: string;\n private readonly openRouterReferer: string | undefined;\n private readonly openRouterTitle: string | undefined;\n\n constructor(modelSchema: ChatModelSchemaType, options: BaseChatModelOptionsType) {\n const parsedOptions = BaseChatModelOptions.parse(options);\n this.modelSchema = modelSchema;\n this.modelName = parsedOptions.modelName;\n this.apiKey = parsedOptions.apiKey;\n this.baseUrl = urlWithoutTrailingSlash(OpenRouter.baseUrl);\n this.streamChatUrl = urlWithoutTrailingSlash(`${this.baseUrl}/chat/completions`);\n this.completeChatUrl = urlWithoutTrailingSlash(`${this.baseUrl}/chat/completions`);\n this.openRouterReferer = parsedOptions.openRouterReferer;\n this.openRouterTitle = parsedOptions.openRouterTitle;\n }\n\n getDefaultBaseUrl(): UrlType {\n return this.baseUrl;\n }\n\n getDefaultHeaders(): HeadersType {\n return {\n Authorization: `Bearer ${this.apiKey}`,\n \"Content-Type\": \"application/json\",\n ...(this.openRouterReferer ? { \"HTTP-Referer\": this.openRouterReferer } : {}),\n ...(this.openRouterTitle ? { \"X-Title\": this.openRouterTitle } : {}),\n };\n }\n\n getDefaultParams(): ParamsType {\n return {\n model: this.modelName,\n };\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n getRetryDelay(responseHeaders: HeadersType): { shouldRetry: boolean; delayMs: number } {\n return { shouldRetry: true, delayMs: 0 };\n }\n\n getTokenCount(messages: MessageType[]): number {\n return messages.reduce((acc, message) => {\n return acc + message.content.map((content) => (content.modality === \"text\" ? content.value : \"\")).join(\" \").length;\n }, 0);\n }\n\n transformModelRequest(request: OpenRouterChatRequestType): {\n modelName: string | undefined;\n config: ConfigType;\n messages: MessageType[];\n tools: ToolType[] | undefined;\n } {\n const safeRequest = OpenRouterChatRequest.safeParse(request);\n if (!safeRequest.success) {\n throw new InvalidModelRequestError({ info: \"Invalid model request\", cause: safeRequest.error });\n }\n\n const parsedRequest = safeRequest.data;\n\n const modelName = parsedRequest.model;\n\n if (parsedRequest.tool_choice && (!parsedRequest.tools || parsedRequest.tools.length === 0)) {\n throw new InvalidModelRequestError({\n info: `Invalid model request for model : '${this.modelName}'`,\n cause: new Error(\"'tools' are required when 'tool_choice' is specified\"),\n });\n }\n\n const _config: ConfigType = {};\n if (parsedRequest.response_format) {\n _config.responseFormat = parsedRequest.response_format.type;\n if (parsedRequest.response_format.type === \"json_schema\") {\n _config.responseSchema = {\n name: parsedRequest.response_format.json_schema.name,\n description: parsedRequest.response_format.json_schema.description || \"\",\n strict: parsedRequest.response_format.json_schema.strict,\n schema: parsedRequest.response_format.json_schema.schema,\n };\n }\n }\n\n if (parsedRequest.tool_choice) {\n if (typeof parsedRequest.tool_choice === \"string\") {\n _config.toolChoice = parsedRequest.tool_choice;\n } else {\n _config.toolChoice = parsedRequest.tool_choice.function.name;\n }\n }\n\n _config.seed = parsedRequest.seed;\n _config.maxTokens = parsedRequest.max_tokens;\n _config.temperature = parsedRequest.temperature;\n _config.topA = parsedRequest.top_a;\n _config.topP = parsedRequest.top_p;\n _config.minP = parsedRequest.min_p;\n _config.topK = parsedRequest.top_k;\n _config.repetitionPenalty = parsedRequest.repetition_penalty;\n _config.presencePenalty = parsedRequest.presence_penalty;\n _config.frequencyPenalty = parsedRequest.frequency_penalty;\n _config.stop = parsedRequest.stop;\n _config.logProbs = parsedRequest.logprobs;\n _config.topLogProbs = parsedRequest.top_logprobs;\n\n const config = Config().parse(removeUndefinedEntries(_config));\n\n const messages: MessageType[] = [];\n const toolCallMap: { [id: string]: ToolCallContentType } = {};\n parsedRequest.messages.forEach((message) => {\n const role = message.role;\n switch (role) {\n case \"system\":\n {\n const content = message.content as string | OpenRouterChatRequestTextContentType[];\n if (typeof content === \"string\") {\n messages.push({\n role: role,\n content: [{ modality: TextModalityLiteral, value: content }],\n });\n } else {\n const _content = content.map((c) => {\n return { modality: TextModalityLiteral, value: c.text };\n });\n messages.push({ role: role, content: _content });\n }\n }\n break;\n\n case \"user\":\n {\n const content = message.content as string | (OpenRouterChatRequestTextContentType | OpenRouterChatRequestImageContentType)[];\n if (typeof content === \"string\") {\n messages.push({\n role: role,\n content: [{ modality: TextModalityLiteral, value: content }],\n });\n } else {\n const _content = content.map((c) => {\n if (c.type === \"text\") {\n return { modality: TextModalityLiteral, value: c.text };\n } else {\n if (c.image_url.url.startsWith(\"data:\")) {\n return {\n modality: ImageModalityLiteral,\n detail: c.image_url.detail || \"auto\",\n value: {\n type: Base64ImageContentTypeLiteral,\n base64: c.image_url.url,\n mediaType: getMimeTypeFromBase64(c.image_url.url) as Base64ImageContentValueType[\"mediaType\"],\n },\n };\n } else {\n return {\n modality: ImageModalityLiteral,\n detail: c.image_url.detail || \"auto\",\n value: { type: UrlImageContentTypeLiteral, url: c.image_url.url },\n };\n }\n }\n });\n messages.push({ role: role, content: _content });\n }\n }\n break;\n\n case \"assistant\":\n {\n const assistantContent: ContentType[] = [];\n\n if (!message.content && !message.tool_calls) {\n throw new InvalidModelRequestError({\n info: `Invalid model request for model : '${this.modelName}'`,\n cause: new Error(\"one of'content' or 'tool_calls' must be provided\"),\n });\n }\n\n if (message.content) {\n const content = message.content as string | OpenRouterChatRequestTextContentType[];\n if (typeof content === \"string\") {\n assistantContent.push({ modality: TextModalityLiteral, value: content });\n } else {\n content.forEach((c) => {\n assistantContent.push({ modality: TextModalityLiteral, value: c.text });\n });\n }\n }\n\n if (message.tool_calls) {\n const toolCalls = message.tool_calls;\n toolCalls.forEach((toolCall, index) => {\n const toolCallContent: ToolCallContentType = {\n modality: ToolCallModalityLiteral,\n id: toolCall.id,\n index: index,\n name: toolCall.function.name,\n arguments: toolCall.function.arguments,\n };\n assistantContent.push(toolCallContent);\n toolCallMap[toolCallContent.id] = toolCallContent;\n });\n }\n messages.push({ role: role, content: assistantContent });\n }\n break;\n\n case \"tool\":\n {\n const toolResponse = message;\n messages.push({\n role: role,\n content: [\n {\n modality: ToolResponseModalityLiteral,\n id: toolResponse.tool_call_id,\n index: toolCallMap[toolResponse.tool_call_id].index,\n name: toolCallMap[toolResponse.tool_call_id].name,\n data: toolResponse.content,\n },\n ],\n });\n }\n break;\n }\n });\n\n const tools: ToolType[] = [];\n if (parsedRequest.tools) {\n parsedRequest.tools.forEach((tool: OpenRouterChatRequestToolType) => {\n tools.push({\n type: \"function\",\n definition: {\n schema: {\n name: tool.function.name,\n description: tool.function.description || \"\",\n strict: tool.function.strict,\n parameters: tool.function.parameters,\n },\n },\n });\n });\n }\n\n return {\n modelName,\n config,\n messages,\n tools: tools.length > 0 ? tools : undefined,\n };\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n transformConfig(config: ConfigType, messages?: MessageType[], tools?: ToolType[]): ParamsType {\n const _toolChoice = config.toolChoice;\n delete config.toolChoice; // can have a specific tool name that is not in the model schema, validated at transformation\n\n const _parsedConfig = this.modelSchema.config.schema.safeParse(config);\n if (!_parsedConfig.success) {\n throw new InvalidConfigError({\n info: `Invalid config for model : '${this.modelName}'`,\n cause: _parsedConfig.error,\n });\n }\n\n const parsedConfig = _parsedConfig.data as ConfigType;\n if (_toolChoice !== undefined) {\n parsedConfig.toolChoice = _toolChoice;\n }\n\n Object.keys(parsedConfig).forEach((key) => {\n if (!(key in this.modelSchema.config.def)) {\n throw new InvalidConfigError({\n info: `Invalid config for model : '${this.modelName}'`,\n cause: new Error(`Invalid config key : '${key}', \n available keys : [${Object.keys(this.modelSchema.config.def).join(\", \")}]`),\n });\n }\n });\n\n const transformedConfig = Object.keys(parsedConfig).reduce((acc, key) => {\n const def = this.modelSchema.config.def[key];\n const paramKey = def.param;\n const paramValue = (parsedConfig as ConfigType)[key];\n\n if (paramKey === \"max_tokens\" && def.type === \"range\" && paramValue === 0) {\n acc[paramKey] = def.max;\n } else {\n acc[paramKey] = paramValue;\n }\n\n return acc;\n }, {} as ParamsType);\n\n if (transformedConfig.top_logprobs && !transformedConfig.logprobs) {\n throw new InvalidConfigError({\n info: `Invalid config for model : '${this.modelName}'`,\n cause: new Error(\"'logprobs' must be 'true' when 'top_logprobs' is specified\"),\n });\n }\n\n if (\"tool_choice\" in transformedConfig && transformedConfig.tool_choice !== undefined) {\n const toolChoice = transformedConfig.tool_choice as string;\n if (!tools || (tools && tools.length === 0)) {\n throw new InvalidConfigError({\n info: `Invalid config for model : '${this.modelName}'`,\n cause: new Error(\"'tools' are required when 'toolChoice' is specified\"),\n });\n } else if (tools && tools.length > 0) {\n const configToolChoice = this.modelSchema.config.def.toolChoice as SelectStringConfigItemDefType;\n if (!configToolChoice.choices.includes(toolChoice)) {\n if (tools.map((tool) => tool.definition.schema.name).includes(toolChoice)) {\n transformedConfig.tool_choice = { type: \"function\", function: { name: toolChoice } };\n } else {\n throw new InvalidConfigError({\n info: `Invalid config for model : '${this.modelName}'`,\n cause: new Error(`toolChoice : '${toolChoice}' is not part of provided 'tools' names or \n one of [${configToolChoice.choices.join(\", \")}]`),\n });\n }\n }\n }\n }\n\n if (\"response_format\" in transformedConfig && transformedConfig.response_format !== undefined) {\n const responseFormat = transformedConfig.response_format as string;\n if (responseFormat === \"json_schema\") {\n if (!(\"response_schema\" in transformedConfig)) {\n throw new InvalidConfigError({\n info: `Invalid config for model : '${this.modelName}'`,\n cause: new Error(\"'responseSchema' is required in config when 'responseFormat' is 'json_schema'\"),\n });\n } else {\n transformedConfig.response_format = {\n type: \"json_schema\",\n json_schema: transformedConfig.response_schema,\n };\n delete transformedConfig.response_schema;\n }\n } else {\n transformedConfig.response_format = { type: responseFormat };\n }\n }\n\n return transformedConfig;\n }\n\n transformMessages(messages: MessageType[]): ParamsType {\n if (!messages || (messages && messages.length === 0)) {\n return { messages: [] };\n }\n\n const parsedMessages = messages.map((message) => {\n const parsedMessage = Message().safeParse(message);\n if (!parsedMessage.success) {\n throw new InvalidMessagesError({ info: \"Invalid messages\", cause: parsedMessage.error });\n }\n return parsedMessage.data;\n });\n\n parsedMessages.forEach((message) => {\n message.content.forEach((content) => {\n if (!this.modelSchema.modalities.includes(content.modality)) {\n throw new InvalidMessagesError({\n info: `Invalid message content for model : '${this.modelName}'`,\n cause: new Error(`model : '${this.modelName}' does not support modality : '${content.modality}', \n available modalities : [${this.modelSchema.modalities.join(\", \")}]`),\n });\n }\n });\n });\n\n parsedMessages.forEach((message) => {\n if (!Object.keys(this.modelSchema.roles).includes(message.role)) {\n throw new InvalidMessagesError({\n info: `Invalid message content for model : '${this.modelName}'`,\n cause: new Error(`model : '${this.modelName}' does not support role : '${message.role}', \n available roles : [${Object.keys(this.modelSchema.roles).join(\", \")}]`),\n });\n }\n });\n\n const transformedMessages = parsedMessages.map((message) => {\n switch (message.role) {\n case SystemRoleLiteral: {\n const textContent: { type: \"text\"; text: string }[] = [];\n message.content.forEach((content) => {\n if (content.modality === TextModalityLiteral) {\n textContent.push({ type: \"text\", text: content.value });\n } else {\n throw new InvalidMessagesError({\n info: `Invalid message 'role' and 'modality' combination for model : ${this.modelName}`,\n cause: new Error(`role : '${message.role}' cannot have content with modality : '${content.modality}'`),\n });\n }\n });\n\n return {\n role: this.modelSchema.roles[message.role],\n content: textContent,\n };\n }\n\n case AssistantRoleLiteral: {\n const textContent: { type: \"text\"; text: string }[] = [];\n const toolCalls: { id: string; type: \"function\"; function: { name: string; arguments: string } }[] = [];\n message.content.forEach((content) => {\n if (content.modality === TextModalityLiteral) {\n textContent.push({ type: \"text\", text: content.value });\n } else if (content.modality === ToolCallModalityLiteral) {\n toolCalls.push({\n id: content.id,\n type: \"function\",\n function: { name: content.name, arguments: content.arguments },\n });\n } else {\n throw new InvalidMessagesError({\n info: `Invalid message 'role' and 'modality' combination for model : ${this.modelName}`,\n cause: new Error(`role : '${message.role}' cannot have content with modality : '${content.modality}'`),\n });\n }\n });\n\n return {\n role: this.modelSchema.roles[message.role],\n ...(textContent.length > 0 ? { content: textContent } : {}),\n ...(toolCalls.length > 0 ? { tool_calls: toolCalls } : {}),\n };\n }\n\n case UserRoleLiteral: {\n const textContent: { type: \"text\"; text: string }[] = [];\n const imageContent: { type: \"image_url\"; image_url: { url: string; detail: string } }[] = [];\n message.content.forEach((content) => {\n if (content.modality === TextModalityLiteral) {\n textContent.push({ type: \"text\", text: content.value });\n } else if (content.modality === ImageModalityLiteral) {\n imageContent.push({\n type: \"image_url\",\n image_url: {\n url: content.value.type === \"url\" ? content.value.url : content.value.base64,\n detail: content.detail,\n },\n });\n } else {\n throw new InvalidMessagesError({\n info: `Invalid message 'role' and 'modality' combination for model : ${this.modelName}`,\n cause: new Error(`role : '${message.role}' cannot have content with modality : '${content.modality}'`),\n });\n }\n });\n\n const combinedContent = [...textContent, ...imageContent];\n\n return {\n role: this.modelSchema.roles[message.role],\n content: combinedContent,\n };\n }\n\n case ToolRoleLiteral: {\n if (message.content.length !== 1) {\n throw new InvalidMessagesError({\n info: `Invalid message for role : '${message.role}'`,\n cause: new Error(`role : '${message.role}' must have exactly one content item`),\n });\n }\n\n if (message.content[0].modality !== ToolResponseModalityLiteral) {\n throw new InvalidMessagesError({\n info: `Invalid message 'role' and 'modality' combination for model : ${this.modelName}`,\n cause: new Error(`role : '${message.role}' must have content with modality : '${ToolResponseModalityLiteral}'`),\n });\n }\n\n const toolResponse = message.content[0] as ToolResponseContentType;\n return {\n role: this.modelSchema.roles[message.role],\n tool_call_id: toolResponse.id,\n content: toolResponse.data,\n };\n }\n\n default: {\n throw new InvalidMessagesError({\n info: `Invalid message 'role' for model : ${this.modelName}`,\n cause: new Error(`role : '${message.role}' is not supported, \n available roles : [${Object.keys(this.modelSchema.roles).join(\", \")}]`),\n });\n }\n }\n });\n\n return { messages: transformedMessages };\n }\n\n transformTools(tools: ToolType[]): ParamsType {\n if (!this.modelSchema.modalities.includes(ToolCallModalityLiteral)) {\n throw new InvalidToolsError({\n info: `Invalid tool 'modality' for model : ${this.modelName}`,\n cause: new Error(`model : '${this.modelName}' does not support tool modality : '${ToolCallModalityLiteral}'`),\n });\n }\n\n if (!tools || (tools && tools.length === 0)) {\n return { tools: [] as ToolType[] };\n }\n\n const parsedTools = tools.map((tool) => {\n const parsedTool = Tool().safeParse(tool);\n if (!parsedTool.success) {\n throw new InvalidToolsError({ info: \"Invalid tools\", cause: parsedTool.error });\n }\n return parsedTool.data;\n });\n\n const transformedTools = parsedTools.map((tool) => ({\n type: \"function\",\n function: tool.definition.schema,\n }));\n\n return { tools: transformedTools };\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n async getCompleteChatUrl(config?: ConfigType, messages?: MessageType[], tools?: ToolType[]): Promise<UrlType> {\n return new Promise((resolve) => {\n resolve(this.completeChatUrl);\n });\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n async getCompleteChatHeaders(config?: ConfigType, messages?: MessageType[], tools?: ToolType[]): Promise<HeadersType> {\n return new Promise((resolve) => {\n resolve(this.getDefaultHeaders());\n });\n }\n\n async getCompleteChatData(config: ConfigType, messages: MessageType[], tools?: ToolType[]): Promise<ParamsType> {\n const transformedConfig = this.transformConfig(config, messages, tools);\n const transformedMessages = this.transformMessages(messages);\n if (transformedMessages.messages && (transformedMessages.messages as MessageType[]).length === 0) {\n throw new InvalidMessagesError({\n info: \"Messages are required\",\n cause: new Error(\"Messages are required\"),\n });\n }\n\n const transformedTools = tools ? this.transformTools(tools) : {};\n\n return new Promise((resolve) => {\n resolve({\n ...this.getDefaultParams(),\n ...transformedConfig,\n ...transformedMessages,\n ...transformedTools,\n });\n });\n }\n\n transformCompleteChatResponse(response: any): ChatResponseType {\n const safe = OpenRouterCompleteChatResponse.safeParse(response);\n if (safe.success) {\n if (safe.data.choices.length === 0) {\n throw new ModelResponseError({\n info: \"Invalid response from model\",\n cause: new Error(`No choices in response : ${JSON.stringify(safe.data)}`),\n });\n }\n\n const parsedResponse: OpenRouterCompleteChatResponseType = safe.data;\n const messages: MessageType[] = [\n {\n role: AssistantRoleLiteral,\n content: [],\n },\n ];\n const message = parsedResponse.choices[0].message;\n if (message.content) {\n messages[0].content.push(createTextContent(message.content));\n }\n\n if (message.refusal) {\n messages[0].content.push(createTextContent(message.refusal));\n }\n\n if (message.tool_calls) {\n message.tool_calls.forEach((toolCall, index) => {\n messages[0].content.push(createToolCallContent(index, toolCall.id, toolCall.function.name, toolCall.function.arguments));\n });\n }\n\n let usage: ChatUsageType | undefined;\n if (parsedResponse.usage) {\n usage = {\n promptTokens: parsedResponse.usage.prompt_tokens,\n completionTokens: parsedResponse.usage.completion_tokens,\n totalTokens: parsedResponse.usage.total_tokens,\n };\n }\n\n const logProbs: ChatLogProbsType = [];\n const _logProbs = parsedResponse.choices[0].logprobs;\n if (_logProbs) {\n if (_logProbs.content) {\n logProbs.push(\n ..._logProbs.content.map((logProb) => ({\n token: logProb.token,\n logProb: logProb.logprob,\n bytes: logProb.bytes,\n topLogProbs: logProb.top_logprobs.map((topLogProb) => ({\n token: topLogProb.token,\n logProb: topLogProb.logprob,\n bytes: topLogProb.bytes,\n })),\n }))\n );\n }\n if (_logProbs.refusal) {\n logProbs.push(\n ..._logProbs.refusal.map((logProb) => ({\n token: logProb.token,\n logProb: logProb.logprob,\n bytes: logProb.bytes,\n topLogProbs: logProb.top_logprobs.map((topLogProb) => ({\n token: topLogProb.token,\n logProb: topLogProb.logprob,\n bytes: topLogProb.bytes,\n })),\n }))\n );\n }\n }\n\n return {\n messages: messages,\n usage: usage,\n logProbs: logProbs,\n };\n }\n\n throw new ModelResponseError({ info: \"Invalid response from model\", cause: safe.error });\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n async getStreamChatUrl(config?: ConfigType, messages?: MessageType[], tools?: ToolType[]): Promise<UrlType> {\n return new Promise((resolve) => {\n resolve(this.streamChatUrl);\n });\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n async getStreamChatHeaders(config?: ConfigType, messages?: MessageType[], tools?: ToolType[]): Promise<HeadersType> {\n return new Promise((resolve) => {\n resolve(this.getDefaultHeaders());\n });\n }\n\n async getStreamChatData(config: ConfigType, messages: MessageType[], tools?: ToolType[]): Promise<ParamsType> {\n const transformedConfig = this.transformConfig(config, messages, tools);\n const transformedMessages = this.transformMessages(messages);\n if (transformedMessages.messages && (transformedMessages.messages as MessageType[]).length === 0) {\n throw new InvalidMessagesError({\n info: \"Messages are required\",\n cause: new Error(\"Messages are required\"),\n });\n }\n\n const transformedTools = tools ? this.transformTools(tools) : {};\n\n return new Promise((resolve) => {\n resolve({\n stream: true,\n stream_options: { include_usage: true },\n ...this.getDefaultParams(),\n ...transformedConfig,\n ...transformedMessages,\n ...transformedTools,\n });\n });\n }\n\n async *transformStreamChatResponseChunk(\n chunk: string,\n buffer: string\n ): AsyncGenerator<{ partialResponse: PartialChatResponseType; buffer: string }> {\n const data = buffer + chunk;\n let lines: string[] = [];\n let newBuffer = \"\";\n\n // Split data into complete lines and new buffer\n let currentIndex = 0;\n while (currentIndex < data.length) {\n const newlineIndex = data.indexOf(\"\\n\", currentIndex);\n if (newlineIndex === -1) {\n newBuffer = data.substring(currentIndex);\n break;\n } else {\n const line = data.substring(currentIndex, newlineIndex).trim();\n if (line) {\n lines.push(line);\n }\n currentIndex = newlineIndex + 1;\n }\n }\n\n // Process each complete line\n for (const line of lines) {\n if (line === \"data: [DONE]\") {\n return; // End of stream\n }\n\n if (line.startsWith(\"data: \")) {\n const jsonStr = line.substring(\"data: \".length);\n try {\n const structuredLine = JSON.parse(jsonStr);\n const safe = OpenRouterStreamChatResponse.safeParse(structuredLine);\n if (safe.success) {\n const partialResponse: PartialChatResponseType = { partialMessages: [] };\n const parsedResponse: OpenRouterStreamChatResponseType = safe.data;\n // Process message content\n if (parsedResponse.choices.length > 0) {\n const message = parsedResponse.choices[0].delta;\n if (message !== undefined && Object.keys(message).length !== 0) {\n if (\"content\" in message && message.content !== null) {\n partialResponse.partialMessages.push(createPartialTextMessage(AssistantRoleLiteral, message.content as string));\n } else if (\"refusal\" in message && message.refusal !== null) {\n partialResponse.partialMessages.push(createPartialTextMessage(AssistantRoleLiteral, message.refusal as string));\n } else if (\"tool_calls\" in message && message.tool_calls !== undefined) {\n const toolCall = message.tool_calls.at(0)!;\n partialResponse.partialMessages.push(\n createPartialToolCallMessage(\n AssistantRoleLiteral,\n toolCall.index,\n toolCall.id,\n toolCall.function?.name,\n toolCall.function?.arguments\n )\n );\n }\n }\n }\n\n if (parsedResponse.usage) {\n partialResponse.usage = {\n promptTokens: parsedResponse.usage.prompt_tokens,\n completionTokens: parsedResponse.usage.completion_tokens,\n totalTokens: parsedResponse.usage.total_tokens,\n };\n }\n yield { partialResponse: partialResponse, buffer: newBuffer };\n } else {\n throw new ModelResponseError({ info: \"Invalid response from model\", cause: safe.error });\n }\n } catch (error) {\n throw new ModelResponseError({\n info: `Malformed JSON received in stream: ${jsonStr}`,\n cause: error,\n });\n }\n }\n }\n\n // Yield the updated buffer after processing all lines\n yield { partialResponse: { partialMessages: [] }, buffer: newBuffer };\n }\n async *transformProxyStreamChatResponseChunk(\n chunk: string,\n buffer: string,\n data?: any,\n headers?: Record<string, string>,\n query?: Record<string, string>\n ): AsyncGenerator<{ partialResponse: PartialChatResponseType; buffer: string }> {\n // Directly delegate to transformStreamChatResponseChunk\n yield* this.transformStreamChatResponseChunk(chunk, buffer);\n }\n async getProxyStreamChatUrl(data?: any, headers?: Record<string, string>, query?: Record<string, string>): Promise<UrlType> {\n return new Promise((resolve) => {\n resolve(this.streamChatUrl);\n });\n }\n async getProxyCompleteChatUrl(data?: any, headers?: Record<string, string>, query?: Record<string, string>): Promise<UrlType> {\n return new Promise((resolve) => {\n resolve(this.completeChatUrl);\n });\n }\n\n async getProxyCompleteChatHeaders(data?: any, headers?: Record<string, string>, query?: Record<string, string>): Promise<HeadersType> {\n if (!headers) {\n return {};\n }\n const sanitizedHeaders: Record<string, string> = { ...headers };\n\n delete sanitizedHeaders.host;\n delete sanitizedHeaders[\"content-length\"];\n return sanitizedHeaders;\n }\n async getProxyStreamChatHeaders(data?: any, headers?: Record<string, string>, query?: Record<string, string>): Promise<HeadersType> {\n // Directly delegate to getProxyCompleteChatHeaders for now\n return await this.getProxyCompleteChatHeaders(data, headers, query);\n }\n\n getModelPricing(): ChatModelPriceType {\n // Check if the modelName exists in pricingData before accessing it\n if (!(this.modelName in pricingData)) {\n throw new ModelResponseError({\n info: `Invalid model pricing for model : '${this.modelName}'`,\n cause: new Error(`No pricing configuration found for model \"${this.modelName}\"`),\n });\n }\n\n const entry = pricingData[this.modelName as keyof typeof pricingData];\n return entry as ChatModelPriceType;\n }\n}\n\nexport { BaseChatModel, BaseChatModelOptions, type BaseChatModelOptionsType };\n","import { ChatModelSchema } from \"@adaline/provider\";\n\nimport { OpenRouterChatModelConfigs } from \"../../configs\";\nimport {\n OpenRouterChatModelModalities,\n OpenRouterChatModelModalitiesEnum,\n OpenRouterChatModelRoles,\n OpenRouterChatModelRolesMap,\n} from \"./types\";\n\nconst BaseChatModelSchema = ChatModelSchema(OpenRouterChatModelRoles, OpenRouterChatModelModalitiesEnum).parse({\n name: \"__base__\",\n description: \"Base chat model for Open Router\",\n maxInputTokens: 128000,\n maxOutputTokens: 128000,\n roles: OpenRouterChatModelRolesMap,\n modalities: OpenRouterChatModelModalities,\n config: {\n def: OpenRouterChatModelConfigs.base(128000, 4).def,\n schema: OpenRouterChatModelConfigs.base(128000, 4).schema,\n },\n});\n\nexport { BaseChatModelSchema };\n"]}