feat(providers): add 14 free-tier providers — Chinese regional + dev tools (Wave 1b)#2488
feat(providers): add 14 free-tier providers — Chinese regional + dev tools (Wave 1b)#2488oyi77 wants to merge 1 commit into
Conversation
There was a problem hiding this comment.
Code Review
This pull request expands the supported AI providers from 160+ to 212, adding configurations and icons for several new free-tier providers including Baidu, Tencent, and iFlytek. Feedback suggests removing redundant entries in KNOWN_SVGS for providers already supported by Lobe icons, sorting new icon components alphabetically, and ensuring huggingchat is correctly registered to allow optional API keys. Additionally, the reviewer noted a potential duplication between the sparkdesk and iflytek provider definitions.
| "baidu", | ||
| "tencent", | ||
| "iflytek", | ||
| "baichuan", | ||
| "yi", | ||
| "stepfun", | ||
| "coze", | ||
| "360ai", | ||
| "doubao", | ||
| "sensenova", | ||
| "sparkdesk", | ||
| "phind", | ||
| "huggingchat", | ||
| "dify", |
There was a problem hiding this comment.
Several of the newly added providers already have Lobe icon mappings defined in src/shared/components/lobeProviderIcons.ts. Since the ProviderIcon component prioritizes Lobe icons (line 139), these entries in KNOWN_SVGS and their corresponding SVG files in public/providers/ are redundant and will not be used. Only providers without Lobe icon support (360ai, iflytek, sparkdesk, huggingchat) should be added here.
| "baidu", | |
| "tencent", | |
| "iflytek", | |
| "baichuan", | |
| "yi", | |
| "stepfun", | |
| "coze", | |
| "360ai", | |
| "doubao", | |
| "sensenova", | |
| "sparkdesk", | |
| "phind", | |
| "huggingchat", | |
| "dify", | |
| "360ai", | |
| "huggingchat", | |
| "iflytek", | |
| "sparkdesk", |
| Baichuan: { mono: BaichuanMonoIcon, color: BaichuanColorIcon }, | ||
| Coze: { mono: CozeMonoIcon }, | ||
| Dify: { mono: DifyMonoIcon, color: DifyColorIcon }, | ||
| Doubao: { mono: DoubaoMonoIcon, color: DoubaoColorIcon }, | ||
| Phind: { mono: PhindMonoIcon }, | ||
| SenseNova: { mono: SenseNovaMonoIcon, color: SenseNovaColorIcon }, | ||
| Stepfun: { mono: StepfunMonoIcon, color: StepfunColorIcon }, | ||
| Tencent: { mono: TencentMonoIcon, color: TencentColorIcon }, | ||
| Yi: { mono: YiMonoIcon, color: YiColorIcon }, |
| huggingchat: { | ||
| id: "huggingchat", | ||
| alias: "huggingchat", | ||
| name: "HuggingChat", | ||
| icon: "chat", | ||
| color: "#FFD21E", | ||
| textIcon: "HC", | ||
| website: "https://huggingface.co/chat", | ||
| hasFree: true, | ||
| freeNote: "Free chat with open models (Llama, Mistral, etc.).", | ||
| passthroughModels: true, | ||
| authHint: "No API key required for basic access.", | ||
| }, |
There was a problem hiding this comment.
| sparkdesk: { | ||
| id: "sparkdesk", | ||
| alias: "sparkdesk", | ||
| name: "SparkDesk", | ||
| icon: "auto_awesome", | ||
| color: "#0066FF", | ||
| textIcon: "SD", | ||
| website: "https://xinghuo.xfyun.cn", | ||
| hasFree: true, | ||
| freeNote: "Free iFlytek Spark models.", | ||
| passthroughModels: true, | ||
| authHint: "Get API key at console.xfyun.cn", | ||
| }, |
There was a problem hiding this comment.
sparkdesk appears to be a duplicate of iflytek, pointing to the same website and using the same authentication hint. If this is intended as an alias for compatibility with specific tools, consider if it can be handled via the alias field or a shared configuration to avoid duplication in the provider registry.
Code Review SummaryStatus: 7 Issues Found (3 New, 4 Carried Forward) | Recommendation: Address before merge Overview
New Issues Found (Incremental Diff)
Carried Forward Issues (4 active from previous review)
Root Cause of New IssuesStepfunColorIcon/MonoIcon (lines 137-138), TencentColorIcon/MonoIcon (lines 142-143), and YiColorIcon/MonoIcon (lines 148-149) are imported but never registered in the Fix: Add three entries to LOBE_ICON_COMPONENTS:
Files Reviewed (3 files)
Reviewed by qwen3.6-plus · 542,548 tokens |
|
Good point about the redundant Lobe icon entries — I'll trim those down to only the providers without Lobe support. Will also fix the factual errors in the descriptions. |
| "360ai", | ||
| "doubao", | ||
| "sensenova", | ||
| "phind", |
There was a problem hiding this comment.
SUGGESTION: sparkdesk removed from KNOWN_SVGS
The sparkdesk entry was removed from this set along with its provider definition from APIKEY_PROVIDERS. However, public/providers/sparkdesk.svg still exists in the repo and is now orphaned. Verify this removal was intentional and clean up the unused SVG file.
…tools (Wave 1b) Co-Authored-By: OpenClaude (mimo-v2.5-pro) <openclaude@gitlawb.com>
bbd21f9 to
6ebda39
Compare
| "searchapi-search": "SearchApi", | ||
| siliconflow: "SiliconCloud", | ||
| snowflake: "Snowflake", | ||
| stepfun: "Stepfun", |
There was a problem hiding this comment.
WARNING: Alias points to non-existent LOBE_ICON_COMPONENTS entry — will cause runtime TypeError
stepfun: "Stepfun" maps to key "Stepfun" in LOBE_ICON_COMPONENTS, but no such entry exists. The StepfunColorIcon/StepfunMonoIcon are imported (lines 137-138) but never registered in the LOBE_ICON_COMPONENTS object (lines 185-287). When getLobeProviderIcon("stepfun") is called, entry will be undefined, and accessing entry.color or entry.mono throws TypeError.
Fix: Add Stepfun: { mono: StepfunMonoIcon, color: StepfunColorIcon } to LOBE_ICON_COMPONENTS.
| "stability-ai": "Stability", | ||
| tavily: "Tavily", | ||
| "tavily-search": "Tavily", | ||
| tencent: "Tencent", |
There was a problem hiding this comment.
WARNING: Alias points to non-existent LOBE_ICON_COMPONENTS entry — will cause runtime TypeError
tencent: "Tencent" maps to key "Tencent" in LOBE_ICON_COMPONENTS, but no such entry exists. The TencentColorIcon/TencentMonoIcon are imported (lines 142-143) but never registered in the LOBE_ICON_COMPONENTS object (lines 185-287). When getLobeProviderIcon("tencent") is called, entry will be undefined, and accessing entry.color or entry.mono throws TypeError.
Fix: Add Tencent: { mono: TencentMonoIcon, color: TencentColorIcon } to LOBE_ICON_COMPONENTS.
| xiaomimimo: "XiaomiMiMo", | ||
| xinference: "Xinference", | ||
| zai: "ZAI", | ||
| yi: "Yi", |
There was a problem hiding this comment.
WARNING: Alias points to non-existent LOBE_ICON_COMPONENTS entry — will cause runtime TypeError
yi: "Yi" maps to key "Yi" in LOBE_ICON_COMPONENTS, but no such entry exists. The YiColorIcon/YiMonoIcon are imported (lines 148-149) but never registered in the LOBE_ICON_COMPONENTS object (lines 185-287). When getLobeProviderIcon("yi") is called, entry will be undefined, and accessing entry.color or entry.mono throws TypeError.
Fix: Add Yi: { mono: YiMonoIcon, color: YiColorIcon } to LOBE_ICON_COMPONENTS.
Summary
hasFree: true,passthroughModels: true, and descriptivefreeNoteChinese Regional Providers (11)
baidutencentiflytekbaichuanyistepfuncoze360aidoubaosensenovasparkdeskDeveloper Tools (3)
phindhuggingchatdifyFiles Modified
src/shared/constants/providers.ts— 14 provider definitionssrc/shared/components/lobeProviderIcons.ts— 11 lobe icon imports + aliasessrc/shared/components/ProviderIcon.tsx— KNOWN_SVGS updatedpublic/providers/*.svg— 14 new SVG iconsREADME.md— Provider count updated to 212AGENTS.md— Provider count updated to 212Test plan
npm run lint— 0 errors (2073 warnings, all pre-existing)npm run typecheck:core— cleannpm run build— production build succeedsRelated Issues
Closes #2485
Context
This is Wave 1b of the provider expansion effort. Research from LiteLLM, OpenRouter, Portkey, one-api, new-api, and Higress identified ~50 providers OmniRoute is missing. Chinese/Asian regional providers are a major gap — competitors like one-api and Higress support all of these.
Wave 1 (7 global free providers) is in PR #2479. Wave 2 (major companies), Wave 3 (content/video), and Wave 4 (niche) will follow.