Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
43 changes: 43 additions & 0 deletions packages/core/src/__tests__/model-metadata.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -164,3 +164,46 @@ describe('deepseek v4 flash vision exp metadata regression', () => {
);
});
});

// The Agent Plan gateway has no model-list endpoint its key can reach and has
// no models.dev snapshot, so its catalog is a hand-maintained mirror of the
// official plan page (volcengine docs 2366394) and its model release and
// retirement announcements. These tests pin that mirror to the facts those
// pages published as of 2026-09.
describe('Volcengine Agent Plan official catalog mirror', () => {
it('offers glm-5.3-flash with the facts the plan page publishes', () => {
assert.ok(
providerFallbackModelIds(PROVIDER_REGISTRY['volcengine-agent-plan']).includes(
'glm-5.3-flash',
),
);
const metadata = lookupModelMetadata('volcengine-agent-plan', 'glm-5.3-flash');
assert.equal(metadata.displayName, 'GLM-5.3-Flash');
assert.equal(metadata.contextWindow, 1_024_000);
assert.equal(metadata.maxOutputTokens, 128_000);
assert.equal(metadata.capabilities?.vision, true);
});

it('pins glm-5.3 to the plan page table literals', () => {
const metadata = lookupModelMetadata('volcengine-agent-plan', 'glm-5.3');
assert.equal(metadata.contextWindow, 1_024_000);
assert.equal(metadata.maxOutputTokens, 128_000);
});

it('carries the official 1M context window for minimax-m3', () => {
assert.equal(
lookupModelMetadata('volcengine-agent-plan', 'minimax-m3').contextWindow,
1_024_000,
);
});

it('records the upstream retirement of glm-5.2, kimi-k2.6 and minimax-m2.7', () => {
for (const modelId of ['glm-5.2', 'kimi-k2.6', 'minimax-m2.7']) {
assert.equal(
lookupModelMetadata('volcengine-agent-plan', modelId).lifecycle,
'deprecated',
modelId,
);
}
});
});
33 changes: 26 additions & 7 deletions packages/core/src/model-metadata.ts
Original file line number Diff line number Diff line change
Expand Up @@ -285,11 +285,18 @@ const VOLCENGINE_CODING_PLAN_MODEL_METADATA: Record<string, ModelMetadata> = {
'kimi-k2.6': planModel('Kimi-K2.6', true, 256_000, 32_000),
'kimi-k2.7-code': planModel('Kimi-K2.7-Code', true, 256_000, 32_000),
};
// Hand-maintained mirror of the official Agent Plan personal plan page
// (docs.volcengine.com/docs/82379/2366394) and its model release/retirement
// announcements (82379/2578669, 82379/2578673): the gateway has no
// model-list endpoint its plan key can reach and models.dev has no snapshot.
// The page's table lists windows as "1024k"/"128k"; transcribe those
// literals as 1_024_000/128_000 (its prose "1M" is the same figure rounded).
// Re-check the page before editing an entry here.
const VOLCENGINE_AGENT_PLAN_MODEL_METADATA: Record<string, ModelMetadata> = {
'ark-code-latest': agentPlanModel('Ark Code Latest', 256_000, 32_000, { vision: true }),
// Agent Plan currently exposes GLM-5.3 in its ark-code-latest routing catalog.
// The underlying model's published limits are 1M context and 128K output.
'glm-5.3': agentPlanModel('GLM-5.3', 1_000_000, 131_072),
// The plan page lists "glm-5.3 (glm-latest)": thinking is on by default and
// cannot be turned off.
'glm-5.3': agentPlanModel('GLM-5.3', 1_024_000, 128_000),
'doubao-seed-2.0-mini': agentPlanModel('Doubao Seed 2.0 Mini', 256_000, 128_000, {
vision: true,
}),
Expand All @@ -309,11 +316,23 @@ const VOLCENGINE_AGENT_PLAN_MODEL_METADATA: Record<string, ModelMetadata> = {
'doubao-seed-2.0-pro': agentPlanModel('Doubao Seed 2.0 Pro', 256_000, 128_000, {
lifecycle: 'deprecated',
}),
'minimax-m2.7': agentPlanModel('MiniMax-M2.7', 200_000, 128_000),
'minimax-m3': agentPlanModel('MiniMax-M3', 512_000, 128_000, { vision: true }),
'glm-5.2': agentPlanModel('GLM-5.2', 1_024_000, 128_000),
'minimax-m2.7': agentPlanModel('MiniMax-M2.7', 200_000, 128_000, {
// Upstream retirement notice of 2026-08-04; the gateway routes to minimax-m3.
lifecycle: 'deprecated',
}),
'minimax-m3': agentPlanModel('MiniMax-M3', 1_024_000, 128_000, { vision: true }),
'glm-5.2': agentPlanModel('GLM-5.2', 1_024_000, 128_000, {
// Upstream service ended 2026-08-31; the gateway routes to glm-5.3.
lifecycle: 'deprecated',
}),
// Official alias of glm-5.3 (the plan page lists "glm-5.3 (glm-latest)").
'glm-latest': agentPlanModel('GLM Latest', 1_024_000, 128_000),
'kimi-k2.6': agentPlanModel('Kimi-K2.6', 256_000, 32_000, { vision: true }),
'glm-5.3-flash': agentPlanModel('GLM-5.3-Flash', 1_024_000, 128_000, { vision: true }),
'kimi-k2.6': agentPlanModel('Kimi-K2.6', 256_000, 32_000, {
// Upstream service ended 2026-08-18; migrate to kimi-k2.7-code or kimi-k3.
lifecycle: 'deprecated',
vision: true,
}),
'kimi-k2.7-code': agentPlanModel('Kimi-K2.7-Code', 256_000, 32_000, { vision: true }),
'deepseek-v4-pro': agentPlanModel('DeepSeek-V4-Pro', 1_024_000, 384_000),
'kimi-k3': agentPlanModel('Kimi-K3', 1_024_000, 128_000, { vision: true }),
Expand Down
1 change: 1 addition & 0 deletions packages/core/src/provider-registry.ts
Original file line number Diff line number Diff line change
Expand Up @@ -353,6 +353,7 @@ const volcengineCodingPlanModelIds = [
const volcengineAgentPlanModelIds = [
'ark-code-latest',
'glm-5.3',
'glm-5.3-flash',
'doubao-seed-2.0-mini',
'doubao-seed-2.0-lite',
'deepseek-v4-flash',
Expand Down