Files
openclaw/extensions/synthetic/models.ts
Peter Steinberger 349f78776d fix(models): refresh bundled provider catalogs (#109410)
* fix(models): refresh bundled provider catalogs

* docs(models): refresh generated docs map

* fix(xiaomi): keep provider helper private

* chore(release): defer catalog release note
2026-07-16 16:47:25 -07:00

86 lines
2.1 KiB
TypeScript

// Synthetic plugin module implements models behavior.
import type { ModelDefinitionConfig } from "openclaw/plugin-sdk/provider-model-shared";
export const SYNTHETIC_BASE_URL = "https://api.synthetic.new/anthropic";
export const SYNTHETIC_DEFAULT_MODEL_ID = "hf:MiniMaxAI/MiniMax-M3";
export const SYNTHETIC_DEFAULT_MODEL_REF = `synthetic/${SYNTHETIC_DEFAULT_MODEL_ID}`;
const SYNTHETIC_DEFAULT_COST = {
input: 0,
output: 0,
cacheRead: 0,
cacheWrite: 0,
};
export const SYNTHETIC_MODEL_CATALOG = [
{
id: SYNTHETIC_DEFAULT_MODEL_ID,
name: "MiniMax M3",
reasoning: true,
input: ["text", "image"],
contextWindow: 262144,
maxTokens: 65536,
},
{
id: "hf:moonshotai/Kimi-K2.7-Code",
name: "Kimi K2.7 Code",
reasoning: true,
input: ["text", "image"],
contextWindow: 262144,
maxTokens: 8192,
},
{
id: "hf:nvidia/NVIDIA-Nemotron-3-Super-120B-A12B-NVFP4",
name: "NVIDIA Nemotron 3 Super 120B A12B",
reasoning: true,
input: ["text"],
contextWindow: 262144,
maxTokens: 8192,
},
{
id: "hf:openai/gpt-oss-120b",
name: "GPT OSS 120B",
reasoning: true,
input: ["text"],
contextWindow: 131072,
maxTokens: 8192,
},
{
id: "hf:Qwen/Qwen3.6-27B",
name: "Qwen3.6 27B",
reasoning: true,
input: ["text", "image"],
contextWindow: 262144,
maxTokens: 81920,
},
{
id: "hf:zai-org/GLM-4.7-Flash",
name: "GLM-4.7 Flash",
reasoning: true,
input: ["text"],
contextWindow: 196608,
maxTokens: 131072,
},
{
id: "hf:zai-org/GLM-5.2",
name: "GLM-5.2",
reasoning: true,
input: ["text"],
contextWindow: 524288,
maxTokens: 131072,
},
] as const;
type SyntheticCatalogEntry = (typeof SYNTHETIC_MODEL_CATALOG)[number];
export function buildSyntheticModelDefinition(entry: SyntheticCatalogEntry): ModelDefinitionConfig {
return {
id: entry.id,
name: entry.name,
reasoning: entry.reasoning,
input: [...entry.input],
cost: SYNTHETIC_DEFAULT_COST,
contextWindow: entry.contextWindow,
maxTokens: entry.maxTokens,
};
}