From 794c902e50bbb124fcea3aabb8ece403b1e318c7 Mon Sep 17 00:00:00 2001 From: Peter Steinberger Date: Sat, 21 Feb 2026 23:41:35 +0000 Subject: [PATCH] refactor(agents): share volc model catalog helpers --- src/agents/byteplus-models.ts | 77 ++++------------------------ src/agents/doubao-models.ts | 75 ++++------------------------ src/agents/volc-models.shared.ts | 86 ++++++++++++++++++++++++++++++++ 3 files changed, 106 insertions(+), 132 deletions(-) create mode 100644 src/agents/volc-models.shared.ts diff --git a/src/agents/byteplus-models.ts b/src/agents/byteplus-models.ts index f60be606e..a6d43ec7a 100644 --- a/src/agents/byteplus-models.ts +++ b/src/agents/byteplus-models.ts @@ -1,4 +1,10 @@ import type { ModelDefinitionConfig } from "../config/types.js"; +import { + buildVolcModelDefinition, + VOLC_MODEL_GLM_4_7, + VOLC_MODEL_KIMI_K2_5, + VOLC_SHARED_CODING_MODEL_CATALOG, +} from "./volc-models.shared.js"; export const BYTEPLUS_BASE_URL = "https://ark.ap-southeast.bytepluses.com/api/v3"; export const BYTEPLUS_CODING_BASE_URL = "https://ark.ap-southeast.bytepluses.com/api/coding/v3"; @@ -29,22 +35,8 @@ export const BYTEPLUS_MODEL_CATALOG = [ contextWindow: 256000, maxTokens: 4096, }, - { - id: "kimi-k2-5-260127", - name: "Kimi K2.5", - reasoning: false, - input: ["text", "image"] as const, - contextWindow: 256000, - maxTokens: 4096, - }, - { - id: "glm-4-7-251222", - name: "GLM 4.7", - reasoning: false, - input: ["text", "image"] as const, - contextWindow: 200000, - maxTokens: 4096, - }, + VOLC_MODEL_KIMI_K2_5, + VOLC_MODEL_GLM_4_7, ] as const; export type BytePlusCatalogEntry = (typeof BYTEPLUS_MODEL_CATALOG)[number]; @@ -53,56 +45,7 @@ export type BytePlusCodingCatalogEntry = (typeof BYTEPLUS_CODING_MODEL_CATALOG)[ export function buildBytePlusModelDefinition( entry: BytePlusCatalogEntry | BytePlusCodingCatalogEntry, ): ModelDefinitionConfig { - return { - id: entry.id, - name: entry.name, - reasoning: entry.reasoning, - input: [...entry.input], - cost: BYTEPLUS_DEFAULT_COST, - contextWindow: entry.contextWindow, - maxTokens: entry.maxTokens, - }; + return buildVolcModelDefinition(entry, BYTEPLUS_DEFAULT_COST); } -export const BYTEPLUS_CODING_MODEL_CATALOG = [ - { - id: "ark-code-latest", - name: "Ark Coding Plan", - reasoning: false, - input: ["text"] as const, - contextWindow: 256000, - maxTokens: 4096, - }, - { - id: "doubao-seed-code", - name: "Doubao Seed Code", - reasoning: false, - input: ["text"] as const, - contextWindow: 256000, - maxTokens: 4096, - }, - { - id: "glm-4.7", - name: "GLM 4.7 Coding", - reasoning: false, - input: ["text"] as const, - contextWindow: 200000, - maxTokens: 4096, - }, - { - id: "kimi-k2-thinking", - name: "Kimi K2 Thinking", - reasoning: false, - input: ["text"] as const, - contextWindow: 256000, - maxTokens: 4096, - }, - { - id: "kimi-k2.5", - name: "Kimi K2.5 Coding", - reasoning: false, - input: ["text"] as const, - contextWindow: 256000, - maxTokens: 4096, - }, -] as const; +export const BYTEPLUS_CODING_MODEL_CATALOG = VOLC_SHARED_CODING_MODEL_CATALOG; diff --git a/src/agents/doubao-models.ts b/src/agents/doubao-models.ts index a1f3f4e5b..1e2ebc389 100644 --- a/src/agents/doubao-models.ts +++ b/src/agents/doubao-models.ts @@ -1,4 +1,10 @@ import type { ModelDefinitionConfig } from "../config/types.js"; +import { + buildVolcModelDefinition, + VOLC_MODEL_GLM_4_7, + VOLC_MODEL_KIMI_K2_5, + VOLC_SHARED_CODING_MODEL_CATALOG, +} from "./volc-models.shared.js"; export const DOUBAO_BASE_URL = "https://ark.cn-beijing.volces.com/api/v3"; export const DOUBAO_CODING_BASE_URL = "https://ark.cn-beijing.volces.com/api/coding/v3"; @@ -37,22 +43,8 @@ export const DOUBAO_MODEL_CATALOG = [ contextWindow: 256000, maxTokens: 4096, }, - { - id: "kimi-k2-5-260127", - name: "Kimi K2.5", - reasoning: false, - input: ["text", "image"] as const, - contextWindow: 256000, - maxTokens: 4096, - }, - { - id: "glm-4-7-251222", - name: "GLM 4.7", - reasoning: false, - input: ["text", "image"] as const, - contextWindow: 200000, - maxTokens: 4096, - }, + VOLC_MODEL_KIMI_K2_5, + VOLC_MODEL_GLM_4_7, { id: "deepseek-v3-2-251201", name: "DeepSeek V3.2", @@ -69,58 +61,11 @@ export type DoubaoCodingCatalogEntry = (typeof DOUBAO_CODING_MODEL_CATALOG)[numb export function buildDoubaoModelDefinition( entry: DoubaoCatalogEntry | DoubaoCodingCatalogEntry, ): ModelDefinitionConfig { - return { - id: entry.id, - name: entry.name, - reasoning: entry.reasoning, - input: [...entry.input], - cost: DOUBAO_DEFAULT_COST, - contextWindow: entry.contextWindow, - maxTokens: entry.maxTokens, - }; + return buildVolcModelDefinition(entry, DOUBAO_DEFAULT_COST); } export const DOUBAO_CODING_MODEL_CATALOG = [ - { - id: "ark-code-latest", - name: "Ark Coding Plan", - reasoning: false, - input: ["text"] as const, - contextWindow: 256000, - maxTokens: 4096, - }, - { - id: "doubao-seed-code", - name: "Doubao Seed Code", - reasoning: false, - input: ["text"] as const, - contextWindow: 256000, - maxTokens: 4096, - }, - { - id: "glm-4.7", - name: "GLM 4.7 Coding", - reasoning: false, - input: ["text"] as const, - contextWindow: 200000, - maxTokens: 4096, - }, - { - id: "kimi-k2-thinking", - name: "Kimi K2 Thinking", - reasoning: false, - input: ["text"] as const, - contextWindow: 256000, - maxTokens: 4096, - }, - { - id: "kimi-k2.5", - name: "Kimi K2.5 Coding", - reasoning: false, - input: ["text"] as const, - contextWindow: 256000, - maxTokens: 4096, - }, + ...VOLC_SHARED_CODING_MODEL_CATALOG, { id: "doubao-seed-code-preview-251028", name: "Doubao Seed Code Preview", diff --git a/src/agents/volc-models.shared.ts b/src/agents/volc-models.shared.ts new file mode 100644 index 000000000..f74af8918 --- /dev/null +++ b/src/agents/volc-models.shared.ts @@ -0,0 +1,86 @@ +import type { ModelDefinitionConfig } from "../config/types.js"; + +export type VolcModelCatalogEntry = { + id: string; + name: string; + reasoning: boolean; + input: readonly string[]; + contextWindow: number; + maxTokens: number; +}; + +export const VOLC_MODEL_KIMI_K2_5 = { + id: "kimi-k2-5-260127", + name: "Kimi K2.5", + reasoning: false, + input: ["text", "image"] as const, + contextWindow: 256000, + maxTokens: 4096, +} as const; + +export const VOLC_MODEL_GLM_4_7 = { + id: "glm-4-7-251222", + name: "GLM 4.7", + reasoning: false, + input: ["text", "image"] as const, + contextWindow: 200000, + maxTokens: 4096, +} as const; + +export const VOLC_SHARED_CODING_MODEL_CATALOG = [ + { + id: "ark-code-latest", + name: "Ark Coding Plan", + reasoning: false, + input: ["text"] as const, + contextWindow: 256000, + maxTokens: 4096, + }, + { + id: "doubao-seed-code", + name: "Doubao Seed Code", + reasoning: false, + input: ["text"] as const, + contextWindow: 256000, + maxTokens: 4096, + }, + { + id: "glm-4.7", + name: "GLM 4.7 Coding", + reasoning: false, + input: ["text"] as const, + contextWindow: 200000, + maxTokens: 4096, + }, + { + id: "kimi-k2-thinking", + name: "Kimi K2 Thinking", + reasoning: false, + input: ["text"] as const, + contextWindow: 256000, + maxTokens: 4096, + }, + { + id: "kimi-k2.5", + name: "Kimi K2.5 Coding", + reasoning: false, + input: ["text"] as const, + contextWindow: 256000, + maxTokens: 4096, + }, +] as const; + +export function buildVolcModelDefinition( + entry: VolcModelCatalogEntry, + cost: ModelDefinitionConfig["cost"], +): ModelDefinitionConfig { + return { + id: entry.id, + name: entry.name, + reasoning: entry.reasoning, + input: [...entry.input], + cost, + contextWindow: entry.contextWindow, + maxTokens: entry.maxTokens, + }; +}