@mariozechner/pi-ai 0.5.30 → 0.5.31

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,"file":"generate.d.ts","sourceRoot":"","sources":["../src/generate.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACX,GAAG,EACH,gBAAgB,EAChB,qBAAqB,EACrB,OAAO,EACP,cAAc,EACd,aAAa,EACb,KAAK,EACL,aAAa,EAEb,qBAAqB,EACrB,MAAM,YAAY,CAAC;AAEpB,qBAAa,oBAAqB,YAAW,cAAc;IAC1D,OAAO,CAAC,KAAK,CAA+B;IAC5C,OAAO,CAAC,OAAO,CAAkE;IACjF,OAAO,CAAC,IAAI,CAAS;IACrB,OAAO,CAAC,mBAAmB,CAA4B;IACvD,OAAO,CAAC,mBAAmB,CAAuC;;IAQlE,IAAI,CAAC,KAAK,EAAE,qBAAqB,GAAG,IAAI;IAqBxC,GAAG,IAAI,IAAI;IASJ,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,aAAa,CAAC,qBAAqB,CAAC;IAmBrE,YAAY,IAAI,OAAO,CAAC,gBAAgB,CAAC;CAGzC;AAID,wBAAgB,SAAS,CAAC,QAAQ,EAAE,aAAa,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;AACtE,wBAAgB,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;AAK/D,wBAAgB,SAAS,CAAC,QAAQ,EAAE,aAAa,GAAG,MAAM,GAAG,SAAS,CAAC;AACvE,wBAAgB,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;AAqBhE,wBAAgB,MAAM,CAAC,IAAI,SAAS,GAAG,EACtC,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,EAClB,OAAO,EAAE,OAAO,EAChB,OAAO,CAAC,EAAE,aAAa,CAAC,IAAI,CAAC,GAC3B,cAAc,CA2BhB;AAED,wBAAsB,QAAQ,CAAC,IAAI,SAAS,GAAG,EAC9C,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,EAClB,OAAO,EAAE,OAAO,EAChB,OAAO,CAAC,EAAE,aAAa,CAAC,IAAI,CAAC,GAC3B,OAAO,CAAC,gBAAgB,CAAC,CAG3B;AAED,wBAAgB,YAAY,CAAC,IAAI,SAAS,GAAG,EAC5C,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,EAClB,OAAO,EAAE,OAAO,EAChB,OAAO,CAAC,EAAE,qBAAqB,GAC7B,cAAc,CAQhB;AAED,wBAAsB,cAAc,CAAC,IAAI,SAAS,GAAG,EACpD,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,EAClB,OAAO,EAAE,OAAO,EAChB,OAAO,CAAC,EAAE,qBAAqB,GAC7B,OAAO,CAAC,gBAAgB,CAAC,CAG3B"}
1
+ {"version":3,"file":"generate.d.ts","sourceRoot":"","sources":["../src/generate.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACX,GAAG,EACH,gBAAgB,EAChB,qBAAqB,EACrB,OAAO,EACP,cAAc,EACd,aAAa,EACb,KAAK,EACL,aAAa,EAEb,qBAAqB,EACrB,MAAM,YAAY,CAAC;AAEpB,qBAAa,oBAAqB,YAAW,cAAc;IAC1D,OAAO,CAAC,KAAK,CAA+B;IAC5C,OAAO,CAAC,OAAO,CAAkE;IACjF,OAAO,CAAC,IAAI,CAAS;IACrB,OAAO,CAAC,mBAAmB,CAA4B;IACvD,OAAO,CAAC,mBAAmB,CAAuC;;IAQlE,IAAI,CAAC,KAAK,EAAE,qBAAqB,GAAG,IAAI;IAqBxC,GAAG,IAAI,IAAI;IASJ,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,aAAa,CAAC,qBAAqB,CAAC;IAmBrE,YAAY,IAAI,OAAO,CAAC,gBAAgB,CAAC;CAGzC;AAID,wBAAgB,SAAS,CAAC,QAAQ,EAAE,aAAa,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;AACtE,wBAAgB,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;AAK/D,wBAAgB,SAAS,CAAC,QAAQ,EAAE,aAAa,GAAG,MAAM,GAAG,SAAS,CAAC;AACvE,wBAAgB,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;AAsBhE,wBAAgB,MAAM,CAAC,IAAI,SAAS,GAAG,EACtC,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,EAClB,OAAO,EAAE,OAAO,EAChB,OAAO,CAAC,EAAE,aAAa,CAAC,IAAI,CAAC,GAC3B,cAAc,CA2BhB;AAED,wBAAsB,QAAQ,CAAC,IAAI,SAAS,GAAG,EAC9C,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,EAClB,OAAO,EAAE,OAAO,EAChB,OAAO,CAAC,EAAE,aAAa,CAAC,IAAI,CAAC,GAC3B,OAAO,CAAC,gBAAgB,CAAC,CAG3B;AAED,wBAAgB,YAAY,CAAC,IAAI,SAAS,GAAG,EAC5C,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,EAClB,OAAO,EAAE,OAAO,EAChB,OAAO,CAAC,EAAE,qBAAqB,GAC7B,cAAc,CAQhB;AAED,wBAAsB,cAAc,CAAC,IAAI,SAAS,GAAG,EACpD,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,EAClB,OAAO,EAAE,OAAO,EAChB,OAAO,CAAC,EAAE,qBAAqB,GAC7B,OAAO,CAAC,gBAAgB,CAAC,CAG3B"}
package/dist/generate.js CHANGED
@@ -82,6 +82,7 @@ export function getApiKey(provider) {
82
82
  cerebras: "CEREBRAS_API_KEY",
83
83
  xai: "XAI_API_KEY",
84
84
  openrouter: "OPENROUTER_API_KEY",
85
+ zai: "ZAI_API_KEY",
85
86
  };
86
87
  const envVar = envMap[provider];
87
88
  return envVar ? process.env[envVar] : undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"generate.js","sourceRoot":"","sources":["../src/generate.ts"],"names":[],"mappings":"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","sourcesContent":["import { type AnthropicOptions, streamAnthropic } from \"./providers/anthropic.js\";\nimport { type GoogleOptions, streamGoogle } from \"./providers/google.js\";\nimport { type OpenAICompletionsOptions, streamOpenAICompletions } from \"./providers/openai-completions.js\";\nimport { type OpenAIResponsesOptions, streamOpenAIResponses } from \"./providers/openai-responses.js\";\nimport type {\n\tApi,\n\tAssistantMessage,\n\tAssistantMessageEvent,\n\tContext,\n\tGenerateStream,\n\tKnownProvider,\n\tModel,\n\tOptionsForApi,\n\tReasoningEffort,\n\tSimpleGenerateOptions,\n} from \"./types.js\";\n\nexport class QueuedGenerateStream implements GenerateStream {\n\tprivate queue: AssistantMessageEvent[] = [];\n\tprivate waiting: ((value: IteratorResult<AssistantMessageEvent>) => void)[] = [];\n\tprivate done = false;\n\tprivate finalMessagePromise: Promise<AssistantMessage>;\n\tprivate resolveFinalMessage!: (message: AssistantMessage) => void;\n\n\tconstructor() {\n\t\tthis.finalMessagePromise = new Promise((resolve) => {\n\t\t\tthis.resolveFinalMessage = resolve;\n\t\t});\n\t}\n\n\tpush(event: AssistantMessageEvent): void {\n\t\tif (this.done) return;\n\n\t\tif (event.type === \"done\") {\n\t\t\tthis.done = true;\n\t\t\tthis.resolveFinalMessage(event.message);\n\t\t}\n\t\tif (event.type === \"error\") {\n\t\t\tthis.done = true;\n\t\t\tthis.resolveFinalMessage(event.partial);\n\t\t}\n\n\t\t// Deliver to waiting consumer or queue it\n\t\tconst waiter = this.waiting.shift();\n\t\tif (waiter) {\n\t\t\twaiter({ value: event, done: false });\n\t\t} else {\n\t\t\tthis.queue.push(event);\n\t\t}\n\t}\n\n\tend(): void {\n\t\tthis.done = true;\n\t\t// Notify all waiting consumers that we're done\n\t\twhile (this.waiting.length > 0) {\n\t\t\tconst waiter = this.waiting.shift()!;\n\t\t\twaiter({ value: undefined as any, done: true });\n\t\t}\n\t}\n\n\tasync *[Symbol.asyncIterator](): AsyncIterator<AssistantMessageEvent> {\n\t\twhile (true) {\n\t\t\t// If we have queued events, yield them\n\t\t\tif (this.queue.length > 0) {\n\t\t\t\tyield this.queue.shift()!;\n\t\t\t} else if (this.done) {\n\t\t\t\t// No more events and we're done\n\t\t\t\treturn;\n\t\t\t} else {\n\t\t\t\t// Wait for next event\n\t\t\t\tconst result = await new Promise<IteratorResult<AssistantMessageEvent>>((resolve) =>\n\t\t\t\t\tthis.waiting.push(resolve),\n\t\t\t\t);\n\t\t\t\tif (result.done) return;\n\t\t\t\tyield result.value;\n\t\t\t}\n\t\t}\n\t}\n\n\tfinalMessage(): Promise<AssistantMessage> {\n\t\treturn this.finalMessagePromise;\n\t}\n}\n\nconst apiKeys: Map<string, string> = new Map();\n\nexport function setApiKey(provider: KnownProvider, key: string): void;\nexport function setApiKey(provider: string, key: string): void;\nexport function setApiKey(provider: any, key: string): void {\n\tapiKeys.set(provider, key);\n}\n\nexport function getApiKey(provider: KnownProvider): string | undefined;\nexport function getApiKey(provider: string): string | undefined;\nexport function getApiKey(provider: any): string | undefined {\n\t// Check explicit keys first\n\tconst key = apiKeys.get(provider);\n\tif (key) return key;\n\n\t// Fall back to environment variables\n\tconst envMap: Record<string, string> = {\n\t\topenai: \"OPENAI_API_KEY\",\n\t\tanthropic: \"ANTHROPIC_API_KEY\",\n\t\tgoogle: \"GEMINI_API_KEY\",\n\t\tgroq: \"GROQ_API_KEY\",\n\t\tcerebras: \"CEREBRAS_API_KEY\",\n\t\txai: \"XAI_API_KEY\",\n\t\topenrouter: \"OPENROUTER_API_KEY\",\n\t};\n\n\tconst envVar = envMap[provider];\n\treturn envVar ? process.env[envVar] : undefined;\n}\n\nexport function stream<TApi extends Api>(\n\tmodel: Model<TApi>,\n\tcontext: Context,\n\toptions?: OptionsForApi<TApi>,\n): GenerateStream {\n\tconst apiKey = options?.apiKey || getApiKey(model.provider);\n\tif (!apiKey) {\n\t\tthrow new Error(`No API key for provider: ${model.provider}`);\n\t}\n\tconst providerOptions = { ...options, apiKey };\n\n\tconst api: Api = model.api;\n\tswitch (api) {\n\t\tcase \"anthropic-messages\":\n\t\t\treturn streamAnthropic(model as Model<\"anthropic-messages\">, context, providerOptions);\n\n\t\tcase \"openai-completions\":\n\t\t\treturn streamOpenAICompletions(model as Model<\"openai-completions\">, context, providerOptions as any);\n\n\t\tcase \"openai-responses\":\n\t\t\treturn streamOpenAIResponses(model as Model<\"openai-responses\">, context, providerOptions as any);\n\n\t\tcase \"google-generative-ai\":\n\t\t\treturn streamGoogle(model as Model<\"google-generative-ai\">, context, providerOptions);\n\n\t\tdefault: {\n\t\t\t// This should never be reached if all Api cases are handled\n\t\t\tconst _exhaustive: never = api;\n\t\t\tthrow new Error(`Unhandled API: ${_exhaustive}`);\n\t\t}\n\t}\n}\n\nexport async function complete<TApi extends Api>(\n\tmodel: Model<TApi>,\n\tcontext: Context,\n\toptions?: OptionsForApi<TApi>,\n): Promise<AssistantMessage> {\n\tconst s = stream(model, context, options);\n\treturn s.finalMessage();\n}\n\nexport function streamSimple<TApi extends Api>(\n\tmodel: Model<TApi>,\n\tcontext: Context,\n\toptions?: SimpleGenerateOptions,\n): GenerateStream {\n\tconst apiKey = options?.apiKey || getApiKey(model.provider);\n\tif (!apiKey) {\n\t\tthrow new Error(`No API key for provider: ${model.provider}`);\n\t}\n\n\tconst providerOptions = mapOptionsForApi(model, options, apiKey);\n\treturn stream(model, context, providerOptions);\n}\n\nexport async function completeSimple<TApi extends Api>(\n\tmodel: Model<TApi>,\n\tcontext: Context,\n\toptions?: SimpleGenerateOptions,\n): Promise<AssistantMessage> {\n\tconst s = streamSimple(model, context, options);\n\treturn s.finalMessage();\n}\n\nfunction mapOptionsForApi<TApi extends Api>(\n\tmodel: Model<TApi>,\n\toptions?: SimpleGenerateOptions,\n\tapiKey?: string,\n): OptionsForApi<TApi> {\n\tconst base = {\n\t\ttemperature: options?.temperature,\n\t\tmaxTokens: options?.maxTokens,\n\t\tsignal: options?.signal,\n\t\tapiKey: apiKey || options?.apiKey,\n\t};\n\n\tswitch (model.api) {\n\t\tcase \"anthropic-messages\": {\n\t\t\tif (!options?.reasoning) return base satisfies AnthropicOptions;\n\n\t\t\tconst anthropicBudgets = {\n\t\t\t\tminimal: 1024,\n\t\t\t\tlow: 2048,\n\t\t\t\tmedium: 8192,\n\t\t\t\thigh: Math.min(25000, model.maxTokens - 1000),\n\t\t\t};\n\n\t\t\treturn {\n\t\t\t\t...base,\n\t\t\t\tthinkingEnabled: true,\n\t\t\t\tthinkingBudgetTokens: anthropicBudgets[options.reasoning],\n\t\t\t} satisfies AnthropicOptions;\n\t\t}\n\n\t\tcase \"openai-completions\":\n\t\t\treturn {\n\t\t\t\t...base,\n\t\t\t\treasoningEffort: options?.reasoning,\n\t\t\t} satisfies OpenAICompletionsOptions;\n\n\t\tcase \"openai-responses\":\n\t\t\treturn {\n\t\t\t\t...base,\n\t\t\t\treasoningEffort: options?.reasoning,\n\t\t\t} satisfies OpenAIResponsesOptions;\n\n\t\tcase \"google-generative-ai\": {\n\t\t\tif (!options?.reasoning) return base as any;\n\n\t\t\tconst googleBudget = getGoogleBudget(model as Model<\"google-generative-ai\">, options.reasoning);\n\t\t\treturn {\n\t\t\t\t...base,\n\t\t\t\tthinking: {\n\t\t\t\t\tenabled: true,\n\t\t\t\t\tbudgetTokens: googleBudget,\n\t\t\t\t},\n\t\t\t} satisfies GoogleOptions;\n\t\t}\n\n\t\tdefault: {\n\t\t\t// Exhaustiveness check\n\t\t\tconst _exhaustive: never = model.api;\n\t\t\tthrow new Error(`Unhandled API in mapOptionsForApi: ${_exhaustive}`);\n\t\t}\n\t}\n}\n\nfunction getGoogleBudget(model: Model<\"google-generative-ai\">, effort: ReasoningEffort): number {\n\t// See https://ai.google.dev/gemini-api/docs/thinking#set-budget\n\tif (model.id.includes(\"2.5-pro\")) {\n\t\tconst budgets = {\n\t\t\tminimal: 128,\n\t\t\tlow: 2048,\n\t\t\tmedium: 8192,\n\t\t\thigh: 32768,\n\t\t};\n\t\treturn budgets[effort];\n\t}\n\n\tif (model.id.includes(\"2.5-flash\")) {\n\t\t// Covers 2.5-flash-lite as well\n\t\tconst budgets = {\n\t\t\tminimal: 128,\n\t\t\tlow: 2048,\n\t\t\tmedium: 8192,\n\t\t\thigh: 24576,\n\t\t};\n\t\treturn budgets[effort];\n\t}\n\n\t// Unknown model - use dynamic\n\treturn -1;\n}\n"]}
1
+ {"version":3,"file":"generate.js","sourceRoot":"","sources":["../src/generate.ts"],"names":[],"mappings":"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","sourcesContent":["import { type AnthropicOptions, streamAnthropic } from \"./providers/anthropic.js\";\nimport { type GoogleOptions, streamGoogle } from \"./providers/google.js\";\nimport { type OpenAICompletionsOptions, streamOpenAICompletions } from \"./providers/openai-completions.js\";\nimport { type OpenAIResponsesOptions, streamOpenAIResponses } from \"./providers/openai-responses.js\";\nimport type {\n\tApi,\n\tAssistantMessage,\n\tAssistantMessageEvent,\n\tContext,\n\tGenerateStream,\n\tKnownProvider,\n\tModel,\n\tOptionsForApi,\n\tReasoningEffort,\n\tSimpleGenerateOptions,\n} from \"./types.js\";\n\nexport class QueuedGenerateStream implements GenerateStream {\n\tprivate queue: AssistantMessageEvent[] = [];\n\tprivate waiting: ((value: IteratorResult<AssistantMessageEvent>) => void)[] = [];\n\tprivate done = false;\n\tprivate finalMessagePromise: Promise<AssistantMessage>;\n\tprivate resolveFinalMessage!: (message: AssistantMessage) => void;\n\n\tconstructor() {\n\t\tthis.finalMessagePromise = new Promise((resolve) => {\n\t\t\tthis.resolveFinalMessage = resolve;\n\t\t});\n\t}\n\n\tpush(event: AssistantMessageEvent): void {\n\t\tif (this.done) return;\n\n\t\tif (event.type === \"done\") {\n\t\t\tthis.done = true;\n\t\t\tthis.resolveFinalMessage(event.message);\n\t\t}\n\t\tif (event.type === \"error\") {\n\t\t\tthis.done = true;\n\t\t\tthis.resolveFinalMessage(event.partial);\n\t\t}\n\n\t\t// Deliver to waiting consumer or queue it\n\t\tconst waiter = this.waiting.shift();\n\t\tif (waiter) {\n\t\t\twaiter({ value: event, done: false });\n\t\t} else {\n\t\t\tthis.queue.push(event);\n\t\t}\n\t}\n\n\tend(): void {\n\t\tthis.done = true;\n\t\t// Notify all waiting consumers that we're done\n\t\twhile (this.waiting.length > 0) {\n\t\t\tconst waiter = this.waiting.shift()!;\n\t\t\twaiter({ value: undefined as any, done: true });\n\t\t}\n\t}\n\n\tasync *[Symbol.asyncIterator](): AsyncIterator<AssistantMessageEvent> {\n\t\twhile (true) {\n\t\t\t// If we have queued events, yield them\n\t\t\tif (this.queue.length > 0) {\n\t\t\t\tyield this.queue.shift()!;\n\t\t\t} else if (this.done) {\n\t\t\t\t// No more events and we're done\n\t\t\t\treturn;\n\t\t\t} else {\n\t\t\t\t// Wait for next event\n\t\t\t\tconst result = await new Promise<IteratorResult<AssistantMessageEvent>>((resolve) =>\n\t\t\t\t\tthis.waiting.push(resolve),\n\t\t\t\t);\n\t\t\t\tif (result.done) return;\n\t\t\t\tyield result.value;\n\t\t\t}\n\t\t}\n\t}\n\n\tfinalMessage(): Promise<AssistantMessage> {\n\t\treturn this.finalMessagePromise;\n\t}\n}\n\nconst apiKeys: Map<string, string> = new Map();\n\nexport function setApiKey(provider: KnownProvider, key: string): void;\nexport function setApiKey(provider: string, key: string): void;\nexport function setApiKey(provider: any, key: string): void {\n\tapiKeys.set(provider, key);\n}\n\nexport function getApiKey(provider: KnownProvider): string | undefined;\nexport function getApiKey(provider: string): string | undefined;\nexport function getApiKey(provider: any): string | undefined {\n\t// Check explicit keys first\n\tconst key = apiKeys.get(provider);\n\tif (key) return key;\n\n\t// Fall back to environment variables\n\tconst envMap: Record<string, string> = {\n\t\topenai: \"OPENAI_API_KEY\",\n\t\tanthropic: \"ANTHROPIC_API_KEY\",\n\t\tgoogle: \"GEMINI_API_KEY\",\n\t\tgroq: \"GROQ_API_KEY\",\n\t\tcerebras: \"CEREBRAS_API_KEY\",\n\t\txai: \"XAI_API_KEY\",\n\t\topenrouter: \"OPENROUTER_API_KEY\",\n\t\tzai: \"ZAI_API_KEY\",\n\t};\n\n\tconst envVar = envMap[provider];\n\treturn envVar ? process.env[envVar] : undefined;\n}\n\nexport function stream<TApi extends Api>(\n\tmodel: Model<TApi>,\n\tcontext: Context,\n\toptions?: OptionsForApi<TApi>,\n): GenerateStream {\n\tconst apiKey = options?.apiKey || getApiKey(model.provider);\n\tif (!apiKey) {\n\t\tthrow new Error(`No API key for provider: ${model.provider}`);\n\t}\n\tconst providerOptions = { ...options, apiKey };\n\n\tconst api: Api = model.api;\n\tswitch (api) {\n\t\tcase \"anthropic-messages\":\n\t\t\treturn streamAnthropic(model as Model<\"anthropic-messages\">, context, providerOptions);\n\n\t\tcase \"openai-completions\":\n\t\t\treturn streamOpenAICompletions(model as Model<\"openai-completions\">, context, providerOptions as any);\n\n\t\tcase \"openai-responses\":\n\t\t\treturn streamOpenAIResponses(model as Model<\"openai-responses\">, context, providerOptions as any);\n\n\t\tcase \"google-generative-ai\":\n\t\t\treturn streamGoogle(model as Model<\"google-generative-ai\">, context, providerOptions);\n\n\t\tdefault: {\n\t\t\t// This should never be reached if all Api cases are handled\n\t\t\tconst _exhaustive: never = api;\n\t\t\tthrow new Error(`Unhandled API: ${_exhaustive}`);\n\t\t}\n\t}\n}\n\nexport async function complete<TApi extends Api>(\n\tmodel: Model<TApi>,\n\tcontext: Context,\n\toptions?: OptionsForApi<TApi>,\n): Promise<AssistantMessage> {\n\tconst s = stream(model, context, options);\n\treturn s.finalMessage();\n}\n\nexport function streamSimple<TApi extends Api>(\n\tmodel: Model<TApi>,\n\tcontext: Context,\n\toptions?: SimpleGenerateOptions,\n): GenerateStream {\n\tconst apiKey = options?.apiKey || getApiKey(model.provider);\n\tif (!apiKey) {\n\t\tthrow new Error(`No API key for provider: ${model.provider}`);\n\t}\n\n\tconst providerOptions = mapOptionsForApi(model, options, apiKey);\n\treturn stream(model, context, providerOptions);\n}\n\nexport async function completeSimple<TApi extends Api>(\n\tmodel: Model<TApi>,\n\tcontext: Context,\n\toptions?: SimpleGenerateOptions,\n): Promise<AssistantMessage> {\n\tconst s = streamSimple(model, context, options);\n\treturn s.finalMessage();\n}\n\nfunction mapOptionsForApi<TApi extends Api>(\n\tmodel: Model<TApi>,\n\toptions?: SimpleGenerateOptions,\n\tapiKey?: string,\n): OptionsForApi<TApi> {\n\tconst base = {\n\t\ttemperature: options?.temperature,\n\t\tmaxTokens: options?.maxTokens,\n\t\tsignal: options?.signal,\n\t\tapiKey: apiKey || options?.apiKey,\n\t};\n\n\tswitch (model.api) {\n\t\tcase \"anthropic-messages\": {\n\t\t\tif (!options?.reasoning) return base satisfies AnthropicOptions;\n\n\t\t\tconst anthropicBudgets = {\n\t\t\t\tminimal: 1024,\n\t\t\t\tlow: 2048,\n\t\t\t\tmedium: 8192,\n\t\t\t\thigh: Math.min(25000, model.maxTokens - 1000),\n\t\t\t};\n\n\t\t\treturn {\n\t\t\t\t...base,\n\t\t\t\tthinkingEnabled: true,\n\t\t\t\tthinkingBudgetTokens: anthropicBudgets[options.reasoning],\n\t\t\t} satisfies AnthropicOptions;\n\t\t}\n\n\t\tcase \"openai-completions\":\n\t\t\treturn {\n\t\t\t\t...base,\n\t\t\t\treasoningEffort: options?.reasoning,\n\t\t\t} satisfies OpenAICompletionsOptions;\n\n\t\tcase \"openai-responses\":\n\t\t\treturn {\n\t\t\t\t...base,\n\t\t\t\treasoningEffort: options?.reasoning,\n\t\t\t} satisfies OpenAIResponsesOptions;\n\n\t\tcase \"google-generative-ai\": {\n\t\t\tif (!options?.reasoning) return base as any;\n\n\t\t\tconst googleBudget = getGoogleBudget(model as Model<\"google-generative-ai\">, options.reasoning);\n\t\t\treturn {\n\t\t\t\t...base,\n\t\t\t\tthinking: {\n\t\t\t\t\tenabled: true,\n\t\t\t\t\tbudgetTokens: googleBudget,\n\t\t\t\t},\n\t\t\t} satisfies GoogleOptions;\n\t\t}\n\n\t\tdefault: {\n\t\t\t// Exhaustiveness check\n\t\t\tconst _exhaustive: never = model.api;\n\t\t\tthrow new Error(`Unhandled API in mapOptionsForApi: ${_exhaustive}`);\n\t\t}\n\t}\n}\n\nfunction getGoogleBudget(model: Model<\"google-generative-ai\">, effort: ReasoningEffort): number {\n\t// See https://ai.google.dev/gemini-api/docs/thinking#set-budget\n\tif (model.id.includes(\"2.5-pro\")) {\n\t\tconst budgets = {\n\t\t\tminimal: 128,\n\t\t\tlow: 2048,\n\t\t\tmedium: 8192,\n\t\t\thigh: 32768,\n\t\t};\n\t\treturn budgets[effort];\n\t}\n\n\tif (model.id.includes(\"2.5-flash\")) {\n\t\t// Covers 2.5-flash-lite as well\n\t\tconst budgets = {\n\t\t\tminimal: 128,\n\t\t\tlow: 2048,\n\t\t\tmedium: 8192,\n\t\t\thigh: 24576,\n\t\t};\n\t\treturn budgets[effort];\n\t}\n\n\t// Unknown model - use dynamic\n\treturn -1;\n}\n"]}
@@ -941,6 +941,23 @@ export declare const MODELS: {
941
941
  contextWindow: number;
942
942
  maxTokens: number;
943
943
  };
944
+ readonly "moonshotai/kimi-k2-instruct-0905": {
945
+ id: string;
946
+ name: string;
947
+ api: "openai-completions";
948
+ provider: string;
949
+ baseUrl: string;
950
+ reasoning: false;
951
+ input: "text"[];
952
+ cost: {
953
+ input: number;
954
+ output: number;
955
+ cacheRead: number;
956
+ cacheWrite: number;
957
+ };
958
+ contextWindow: number;
959
+ maxTokens: number;
960
+ };
944
961
  readonly "moonshotai/kimi-k2-instruct": {
945
962
  id: string;
946
963
  name: string;
@@ -1320,7 +1337,145 @@ export declare const MODELS: {
1320
1337
  maxTokens: number;
1321
1338
  };
1322
1339
  };
1340
+ readonly zai: {
1341
+ readonly "glm-4.5-air": {
1342
+ id: string;
1343
+ name: string;
1344
+ api: "anthropic-messages";
1345
+ provider: string;
1346
+ baseUrl: string;
1347
+ reasoning: true;
1348
+ input: "text"[];
1349
+ cost: {
1350
+ input: number;
1351
+ output: number;
1352
+ cacheRead: number;
1353
+ cacheWrite: number;
1354
+ };
1355
+ contextWindow: number;
1356
+ maxTokens: number;
1357
+ };
1358
+ readonly "glm-4.5v": {
1359
+ id: string;
1360
+ name: string;
1361
+ api: "anthropic-messages";
1362
+ provider: string;
1363
+ baseUrl: string;
1364
+ reasoning: true;
1365
+ input: ("text" | "image")[];
1366
+ cost: {
1367
+ input: number;
1368
+ output: number;
1369
+ cacheRead: number;
1370
+ cacheWrite: number;
1371
+ };
1372
+ contextWindow: number;
1373
+ maxTokens: number;
1374
+ };
1375
+ readonly "glm-4.5-flash": {
1376
+ id: string;
1377
+ name: string;
1378
+ api: "anthropic-messages";
1379
+ provider: string;
1380
+ baseUrl: string;
1381
+ reasoning: true;
1382
+ input: "text"[];
1383
+ cost: {
1384
+ input: number;
1385
+ output: number;
1386
+ cacheRead: number;
1387
+ cacheWrite: number;
1388
+ };
1389
+ contextWindow: number;
1390
+ maxTokens: number;
1391
+ };
1392
+ readonly "glm-4.5": {
1393
+ id: string;
1394
+ name: string;
1395
+ api: "anthropic-messages";
1396
+ provider: string;
1397
+ baseUrl: string;
1398
+ reasoning: true;
1399
+ input: "text"[];
1400
+ cost: {
1401
+ input: number;
1402
+ output: number;
1403
+ cacheRead: number;
1404
+ cacheWrite: number;
1405
+ };
1406
+ contextWindow: number;
1407
+ maxTokens: number;
1408
+ };
1409
+ };
1323
1410
  readonly openrouter: {
1411
+ readonly "openrouter/sonoma-dusk-alpha": {
1412
+ id: string;
1413
+ name: string;
1414
+ api: "openai-completions";
1415
+ provider: string;
1416
+ baseUrl: string;
1417
+ reasoning: false;
1418
+ input: ("text" | "image")[];
1419
+ cost: {
1420
+ input: number;
1421
+ output: number;
1422
+ cacheRead: number;
1423
+ cacheWrite: number;
1424
+ };
1425
+ contextWindow: number;
1426
+ maxTokens: number;
1427
+ };
1428
+ readonly "openrouter/sonoma-sky-alpha": {
1429
+ id: string;
1430
+ name: string;
1431
+ api: "openai-completions";
1432
+ provider: string;
1433
+ baseUrl: string;
1434
+ reasoning: true;
1435
+ input: ("text" | "image")[];
1436
+ cost: {
1437
+ input: number;
1438
+ output: number;
1439
+ cacheRead: number;
1440
+ cacheWrite: number;
1441
+ };
1442
+ contextWindow: number;
1443
+ maxTokens: number;
1444
+ };
1445
+ readonly "qwen/qwen3-max": {
1446
+ id: string;
1447
+ name: string;
1448
+ api: "openai-completions";
1449
+ provider: string;
1450
+ baseUrl: string;
1451
+ reasoning: false;
1452
+ input: "text"[];
1453
+ cost: {
1454
+ input: number;
1455
+ output: number;
1456
+ cacheRead: number;
1457
+ cacheWrite: number;
1458
+ };
1459
+ contextWindow: number;
1460
+ maxTokens: number;
1461
+ };
1462
+ readonly "moonshotai/kimi-k2-0905": {
1463
+ id: string;
1464
+ name: string;
1465
+ api: "openai-completions";
1466
+ provider: string;
1467
+ baseUrl: string;
1468
+ reasoning: false;
1469
+ input: "text"[];
1470
+ cost: {
1471
+ input: number;
1472
+ output: number;
1473
+ cacheRead: number;
1474
+ cacheWrite: number;
1475
+ };
1476
+ contextWindow: number;
1477
+ maxTokens: number;
1478
+ };
1324
1479
  readonly "deepcogito/cogito-v2-preview-llama-109b-moe": {
1325
1480
  id: string;
1326
1481
  name: string;
@@ -1338,6 +1493,23 @@ export declare const MODELS: {
1338
1493
  contextWindow: number;
1339
1494
  maxTokens: number;
1340
1495
  };
1496
+ readonly "stepfun-ai/step3": {
1497
+ id: string;
1498
+ name: string;
1499
+ api: "openai-completions";
1500
+ provider: string;
1501
+ baseUrl: string;
1502
+ reasoning: true;
1503
+ input: ("text" | "image")[];
1504
+ cost: {
1505
+ input: number;
1506
+ output: number;
1507
+ cacheRead: number;
1508
+ cacheWrite: number;
1509
+ };
1510
+ contextWindow: number;
1511
+ maxTokens: number;
1512
+ };
1341
1513
  readonly "qwen/qwen3-30b-a3b-thinking-2507": {
1342
1514
  id: string;
1343
1515
  name: string;
@@ -2732,7 +2904,7 @@ export declare const MODELS: {
2732
2904
  contextWindow: number;
2733
2905
  maxTokens: number;
2734
2906
  };
2735
- readonly "meta-llama/llama-3.1-8b-instruct": {
2907
+ readonly "meta-llama/llama-3.1-70b-instruct": {
2736
2908
  id: string;
2737
2909
  name: string;
2738
2910
  api: "openai-completions";
@@ -2749,7 +2921,7 @@ export declare const MODELS: {
2749
2921
  contextWindow: number;
2750
2922
  maxTokens: number;
2751
2923
  };
2752
- readonly "meta-llama/llama-3.1-70b-instruct": {
2924
+ readonly "meta-llama/llama-3.1-8b-instruct": {
2753
2925
  id: string;
2754
2926
  name: string;
2755
2927
  api: "openai-completions";
@@ -1 +1 @@
1
- {"version":3,"file":"models.generated.d.ts","sourceRoot":"","sources":["../src/models.generated.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAmgGT,CAAC"}
1
+ {"version":3,"file":"models.generated.d.ts","sourceRoot":"","sources":["../src/models.generated.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA+qGT,CAAC"}
@@ -943,6 +943,23 @@ export const MODELS = {
943
943
  contextWindow: 131072,
944
944
  maxTokens: 16384,
945
945
  },
946
+ "moonshotai/kimi-k2-instruct-0905": {
947
+ id: "moonshotai/kimi-k2-instruct-0905",
948
+ name: "Kimi K2 Instruct 0905",
949
+ api: "openai-completions",
950
+ provider: "groq",
951
+ baseUrl: "https://api.groq.com/openai/v1",
952
+ reasoning: false,
953
+ input: ["text"],
954
+ cost: {
955
+ input: 1,
956
+ output: 3,
957
+ cacheRead: 0,
958
+ cacheWrite: 0,
959
+ },
960
+ contextWindow: 262144,
961
+ maxTokens: 16384,
962
+ },
946
963
  "moonshotai/kimi-k2-instruct": {
947
964
  id: "moonshotai/kimi-k2-instruct",
948
965
  name: "Kimi K2 Instruct",
@@ -1322,7 +1339,145 @@ export const MODELS = {
1322
1339
  maxTokens: 8192,
1323
1340
  },
1324
1341
  },
1342
+ zai: {
1343
+ "glm-4.5-air": {
1344
+ id: "glm-4.5-air",
1345
+ name: "GLM-4.5-Air",
1346
+ api: "anthropic-messages",
1347
+ provider: "zai",
1348
+ baseUrl: "https://api.z.ai/api/anthropic",
1349
+ reasoning: true,
1350
+ input: ["text"],
1351
+ cost: {
1352
+ input: 0.2,
1353
+ output: 1.1,
1354
+ cacheRead: 0.03,
1355
+ cacheWrite: 0,
1356
+ },
1357
+ contextWindow: 131072,
1358
+ maxTokens: 98304,
1359
+ },
1360
+ "glm-4.5v": {
1361
+ id: "glm-4.5v",
1362
+ name: "GLM 4.5V",
1363
+ api: "anthropic-messages",
1364
+ provider: "zai",
1365
+ baseUrl: "https://api.z.ai/api/anthropic",
1366
+ reasoning: true,
1367
+ input: ["text", "image"],
1368
+ cost: {
1369
+ input: 0.6,
1370
+ output: 1.8,
1371
+ cacheRead: 0,
1372
+ cacheWrite: 0,
1373
+ },
1374
+ contextWindow: 64000,
1375
+ maxTokens: 16384,
1376
+ },
1377
+ "glm-4.5-flash": {
1378
+ id: "glm-4.5-flash",
1379
+ name: "GLM-4.5-Flash",
1380
+ api: "anthropic-messages",
1381
+ provider: "zai",
1382
+ baseUrl: "https://api.z.ai/api/anthropic",
1383
+ reasoning: true,
1384
+ input: ["text"],
1385
+ cost: {
1386
+ input: 0,
1387
+ output: 0,
1388
+ cacheRead: 0,
1389
+ cacheWrite: 0,
1390
+ },
1391
+ contextWindow: 131072,
1392
+ maxTokens: 98304,
1393
+ },
1394
+ "glm-4.5": {
1395
+ id: "glm-4.5",
1396
+ name: "GLM-4.5",
1397
+ api: "anthropic-messages",
1398
+ provider: "zai",
1399
+ baseUrl: "https://api.z.ai/api/anthropic",
1400
+ reasoning: true,
1401
+ input: ["text"],
1402
+ cost: {
1403
+ input: 0.6,
1404
+ output: 2.2,
1405
+ cacheRead: 0.11,
1406
+ cacheWrite: 0,
1407
+ },
1408
+ contextWindow: 131072,
1409
+ maxTokens: 98304,
1410
+ },
1411
+ },
1325
1412
  openrouter: {
1413
+ "openrouter/sonoma-dusk-alpha": {
1414
+ id: "openrouter/sonoma-dusk-alpha",
1415
+ name: "Sonoma Dusk Alpha",
1416
+ api: "openai-completions",
1417
+ provider: "openrouter",
1418
+ baseUrl: "https://openrouter.ai/api/v1",
1419
+ reasoning: false,
1420
+ input: ["text", "image"],
1421
+ cost: {
1422
+ input: 0,
1423
+ output: 0,
1424
+ cacheRead: 0,
1425
+ cacheWrite: 0,
1426
+ },
1427
+ contextWindow: 2000000,
1428
+ maxTokens: 4096,
1429
+ },
1430
+ "openrouter/sonoma-sky-alpha": {
1431
+ id: "openrouter/sonoma-sky-alpha",
1432
+ name: "Sonoma Sky Alpha",
1433
+ api: "openai-completions",
1434
+ provider: "openrouter",
1435
+ baseUrl: "https://openrouter.ai/api/v1",
1436
+ reasoning: true,
1437
+ input: ["text", "image"],
1438
+ cost: {
1439
+ input: 0,
1440
+ output: 0,
1441
+ cacheRead: 0,
1442
+ cacheWrite: 0,
1443
+ },
1444
+ contextWindow: 2000000,
1445
+ maxTokens: 4096,
1446
+ },
1447
+ "qwen/qwen3-max": {
1448
+ id: "qwen/qwen3-max",
1449
+ name: "Qwen: Qwen3 Max",
1450
+ api: "openai-completions",
1451
+ provider: "openrouter",
1452
+ baseUrl: "https://openrouter.ai/api/v1",
1453
+ reasoning: false,
1454
+ input: ["text"],
1455
+ cost: {
1456
+ input: 1.2,
1457
+ output: 6,
1458
+ cacheRead: 0.24,
1459
+ cacheWrite: 0,
1460
+ },
1461
+ contextWindow: 256000,
1462
+ maxTokens: 32768,
1463
+ },
1464
+ "moonshotai/kimi-k2-0905": {
1465
+ id: "moonshotai/kimi-k2-0905",
1466
+ name: "MoonshotAI: Kimi K2 0905",
1467
+ api: "openai-completions",
1468
+ provider: "openrouter",
1469
+ baseUrl: "https://openrouter.ai/api/v1",
1470
+ reasoning: false,
1471
+ input: ["text"],
1472
+ cost: {
1473
+ input: 0.2962,
1474
+ output: 1.1852999999999998,
1475
+ cacheRead: 0,
1476
+ cacheWrite: 0,
1477
+ },
1478
+ contextWindow: 262144,
1479
+ maxTokens: 4096,
1480
+ },
1326
1481
  "deepcogito/cogito-v2-preview-llama-109b-moe": {
1327
1482
  id: "deepcogito/cogito-v2-preview-llama-109b-moe",
1328
1483
  name: "Cogito V2 Preview Llama 109B",
@@ -1340,6 +1495,23 @@ export const MODELS = {
1340
1495
  contextWindow: 32767,
1341
1496
  maxTokens: 4096,
1342
1497
  },
1498
+ "stepfun-ai/step3": {
1499
+ id: "stepfun-ai/step3",
1500
+ name: "StepFun: Step3",
1501
+ api: "openai-completions",
1502
+ provider: "openrouter",
1503
+ baseUrl: "https://openrouter.ai/api/v1",
1504
+ reasoning: true,
1505
+ input: ["text", "image"],
1506
+ cost: {
1507
+ input: 0.5700000000000001,
1508
+ output: 1.42,
1509
+ cacheRead: 0,
1510
+ cacheWrite: 0,
1511
+ },
1512
+ contextWindow: 65536,
1513
+ maxTokens: 65536,
1514
+ },
1343
1515
  "qwen/qwen3-30b-a3b-thinking-2507": {
1344
1516
  id: "qwen/qwen3-30b-a3b-thinking-2507",
1345
1517
  name: "Qwen: Qwen3 30B A3B Thinking 2507",
@@ -1682,7 +1854,7 @@ export const MODELS = {
1682
1854
  },
1683
1855
  "moonshotai/kimi-k2:free": {
1684
1856
  id: "moonshotai/kimi-k2:free",
1685
- name: "MoonshotAI: Kimi K2 (free)",
1857
+ name: "MoonshotAI: Kimi K2 0711 (free)",
1686
1858
  api: "openai-completions",
1687
1859
  provider: "openrouter",
1688
1860
  baseUrl: "https://openrouter.ai/api/v1",
@@ -1699,7 +1871,7 @@ export const MODELS = {
1699
1871
  },
1700
1872
  "moonshotai/kimi-k2": {
1701
1873
  id: "moonshotai/kimi-k2",
1702
- name: "MoonshotAI: Kimi K2",
1874
+ name: "MoonshotAI: Kimi K2 0711",
1703
1875
  api: "openai-completions",
1704
1876
  provider: "openrouter",
1705
1877
  baseUrl: "https://openrouter.ai/api/v1",
@@ -2233,12 +2405,12 @@ export const MODELS = {
2233
2405
  reasoning: true,
2234
2406
  input: ["text"],
2235
2407
  cost: {
2236
- input: 0.075,
2237
- output: 0.15,
2408
+ input: 0.15,
2409
+ output: 0.39999999999999997,
2238
2410
  cacheRead: 0,
2239
2411
  cacheWrite: 0,
2240
2412
  },
2241
- contextWindow: 131072,
2413
+ contextWindow: 32768,
2242
2414
  maxTokens: 4096,
2243
2415
  },
2244
2416
  "mistralai/mistral-saba": {
@@ -2734,34 +2906,34 @@ export const MODELS = {
2734
2906
  contextWindow: 32768,
2735
2907
  maxTokens: 16384,
2736
2908
  },
2737
- "meta-llama/llama-3.1-8b-instruct": {
2738
- id: "meta-llama/llama-3.1-8b-instruct",
2739
- name: "Meta: Llama 3.1 8B Instruct",
2909
+ "meta-llama/llama-3.1-70b-instruct": {
2910
+ id: "meta-llama/llama-3.1-70b-instruct",
2911
+ name: "Meta: Llama 3.1 70B Instruct",
2740
2912
  api: "openai-completions",
2741
2913
  provider: "openrouter",
2742
2914
  baseUrl: "https://openrouter.ai/api/v1",
2743
2915
  reasoning: false,
2744
2916
  input: ["text"],
2745
2917
  cost: {
2746
- input: 0.015,
2747
- output: 0.02,
2918
+ input: 0.09999999999999999,
2919
+ output: 0.28,
2748
2920
  cacheRead: 0,
2749
2921
  cacheWrite: 0,
2750
2922
  },
2751
2923
  contextWindow: 131072,
2752
2924
  maxTokens: 16384,
2753
2925
  },
2754
- "meta-llama/llama-3.1-70b-instruct": {
2755
- id: "meta-llama/llama-3.1-70b-instruct",
2756
- name: "Meta: Llama 3.1 70B Instruct",
2926
+ "meta-llama/llama-3.1-8b-instruct": {
2927
+ id: "meta-llama/llama-3.1-8b-instruct",
2928
+ name: "Meta: Llama 3.1 8B Instruct",
2757
2929
  api: "openai-completions",
2758
2930
  provider: "openrouter",
2759
2931
  baseUrl: "https://openrouter.ai/api/v1",
2760
2932
  reasoning: false,
2761
2933
  input: ["text"],
2762
2934
  cost: {
2763
- input: 0.09999999999999999,
2764
- output: 0.28,
2935
+ input: 0.015,
2936
+ output: 0.02,
2765
2937
  cacheRead: 0,
2766
2938
  cacheWrite: 0,
2767
2939
  },