fix(web): allow current Qwen flash models in Agent V2 and refresh suggested models (#44873)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Zixuan ChengandClaude Opus 5.5 authored and GitHub committed 2026-10-27 08:41:17 +00:00
1 parent e8b9a3c7fa
commit d4560ac032
2 files changed
+47 -5

No files matched your search

@@ -126,8 +126,9 @@ describe('isAgentCompatibleModel', () => {
)
expect(isAgentCompatibleModel(provider, createModelItem('qwen3-coder-plus'))).toBe(false)
expect(isAgentCompatibleModel(provider, createModelItem('qwen3.5-max'))).toBe(false)
expect(isAgentCompatibleModel(provider, createModelItem('qwen3.7-flash'))).toBe(false)
expect(isAgentCompatibleModel(provider, createModelItem('qwen3.5-flash'))).toBe(false)
expect(isAgentCompatibleModel(provider, createModelItem('qwen-flash'))).toBe(false)
expect(isAgentCompatibleModel(provider, createModelItem('qwen-mt-flash'))).toBe(false)
expect(isAgentCompatibleModel(provider, createModelItem('farui-plus'))).toBe(false)
expect(isAgentCompatibleModel(provider, createModelItem('chatglm-3-turbo'))).toBe(false)
expect(isAgentCompatibleModel(provider, createModelItem('glm-3-turbo'))).toBe(false)
@@ -172,6 +173,15 @@ describe('isAgentCompatibleModel', () => {
expect(isAgentCompatibleModel(provider, createModelItem('grok-4'))).toBe(true)
expect(isAgentCompatibleModel(provider, createModelItem('qwen3.7-max'))).toBe(true)
})
it('should allow Qwen flash models from 3.6 onward', () => {
const provider = createModel('any-provider')
expect(isAgentCompatibleModel(provider, createModelItem('qwen3.6-flash'))).toBe(true)
expect(isAgentCompatibleModel(provider, createModelItem('qwen3.7-flash'))).toBe(true)
expect(isAgentCompatibleModel(provider, createModelItem('qwen3.7-flash-2026-07-15'))).toBe(true)
expect(isAgentCompatibleModel(provider, createModelItem('qwen3.8-flash'))).toBe(true)
})
})
describe('isAgentSuggestedModel', () => {
@@ -202,6 +212,31 @@ describe('isAgentSuggestedModel', () => {
expect(isAgentSuggestedModel(provider, createModelItem('other-model'))).toBe(false)
})
it('should suggest the latest flagship models by their official plugin labels', () => {
const provider = createModel('any-provider')
expect(isAgentSuggestedModel(provider, createModelItem('claude-opus-4-8'))).toBe(true)
expect(isAgentSuggestedModel(provider, createModelItem('claude-opus-4-7'))).toBe(true)
expect(isAgentSuggestedModel(provider, createModelItem('claude-sonnet-4-6'))).toBe(true)
expect(isAgentSuggestedModel(provider, createModelItem('claude-opus-5-5'))).toBe(true)
expect(isAgentSuggestedModel(provider, createModelItem('claude-sonnet-5-5'))).toBe(true)
expect(isAgentSuggestedModel(provider, createModelItem('claude-fable-5-1'))).toBe(true)
expect(isAgentSuggestedModel(provider, createModelItem('gpt-6-astra'))).toBe(true)
expect(isAgentSuggestedModel(provider, createModelItem('gpt-6-sol'))).toBe(true)
expect(isAgentSuggestedModel(provider, createModelItem('gpt-6-luna'))).toBe(true)
expect(
isAgentSuggestedModel(
provider,
createModelItem('GPT-6 Luna (Question Classifier · Decisions)'),
),
).toBe(false)
expect(isAgentSuggestedModel(provider, createModelItem('grok-4.6'))).toBe(true)
expect(isAgentSuggestedModel(provider, createModelItem('qwen3.8-max'))).toBe(true)
expect(isAgentSuggestedModel(provider, createModelItem('kimi-k3.1-pro'))).toBe(true)
expect(isAgentSuggestedModel(provider, createModelItem('kimi-k3.1-pro-highspeed'))).toBe(false)
expect(isAgentSuggestedModel(provider, createModelItem('glm-5.3'))).toBe(true)
})
it('should evaluate suggestions against the English model label', () => {
const provider = createModel('any-provider')
@@ -40,7 +40,6 @@ const agentIncompatibleModelPatterns: RegExp[] = [
/^qwen2/i,
/^qwen3-/i,
/^qwen3\.5/i,
/^qwen.*flash/i,
/^farui-plus$/i,
// zhipu ai
@@ -65,17 +64,22 @@ const agentSuggestedModelPatterns: RegExp[] = [
/^gpt[ .-]5\.5$/i,
/^gpt[ .-]5\.5[ .-]pro$/i,
/^gpt[ .-]5\.6(?:[ .-](?:sol|terra|luna))?$/i,
/^gpt[ .-]6[ .-](?:astra|sol|luna)$/i,
// anthropic
/^(?:claude[ .-])?opus[ .-]4\.8$/i,
/^(?:claude[ .-])?opus[ .-]4\.7$/i,
/^(?:claude[ .-])?sonnet[ .-]4\.6$/i,
/^(?:claude[ .-])?opus[ .-]4[ .-]8$/i,
/^(?:claude[ .-])?opus[ .-]4[ .-]7$/i,
/^(?:claude[ .-])?sonnet[ .-]4[ .-]6$/i,
/^(?:claude[ .-])?opus[ .-]5[ .-]5$/i,
/^(?:claude[ .-])?sonnet[ .-]5[ .-]5$/i,
/^(?:claude[ .-])?fable[ .-]5[ .-]1$/i,
// The Gemini model plugin quality is not strong enough yet, so do not recommend it for now.
// /^gemini 3\.1 pro preview$/i,
// x
/^grok[ .-]4\.3$/i,
/^grok[ .-]4\.6$/i,
// deepseek
/^deepseek[ .-]v4[ .-]pro$/i,
@@ -83,16 +87,19 @@ const agentSuggestedModelPatterns: RegExp[] = [
// qwen
/^qwen[ .-]?3\.7[ .-]max$/i,
/^qwen[ .-]?3\.8[ .-]max$/i,
/^qwen[ .-]?3[ .-]coder[ .-]plus$/i,
// moonshot
/^kimi[ .-]k2\.6$/i,
/^kimi[ .-]k3\.1[ .-]pro$/i,
// minimax
/^minimax[ .-]m3$/i,
// zhipuai
/^glm[ .-]5\.1$/i,
/^glm[ .-]5\.3$/i,
]
export function isAgentCompatibleModel(