feat(providers): add 7 free-tier providers (Wave 1)#2479
Conversation
| <circle cx="16" cy="16" r="14" fill="#8B5CF6" opacity="0.15"/> | ||
| <circle cx="16" cy="16" r="14" fill="none" stroke="#8B5CF6" stroke-width="2"/> | ||
| <text x="16" y="16" text-anchor="middle" dominant-baseline="central" font-family="system-ui,-apple-system,sans-serif" font-size="11" font-weight="600" fill="#8B5CF6">AR</text> | ||
| </svg> No newline at end of file |
There was a problem hiding this comment.
SUGGESTION: Missing trailing newline at end of file
Add a newline character at the end of the file to conform with standard file conventions and prevent potential issues with diff tools or formatters.
| <circle cx="16" cy="16" r="14" fill="#10B981" opacity="0.15"/> | ||
| <circle cx="16" cy="16" r="14" fill="none" stroke="#10B981" stroke-width="2"/> | ||
| <text x="16" y="16" text-anchor="middle" dominant-baseline="central" font-family="system-ui,-apple-system,sans-serif" font-size="11" font-weight="600" fill="#10B981">IA</text> | ||
| </svg> No newline at end of file |
There was a problem hiding this comment.
SUGGESTION: Missing trailing newline at end of file
Add a newline character at the end of the file to conform with standard file conventions and prevent potential issues with diff tools or formatters.
| <circle cx="16" cy="16" r="14" fill="#F59E0B" opacity="0.15"/> | ||
| <circle cx="16" cy="16" r="14" fill="none" stroke="#F59E0B" stroke-width="2"/> | ||
| <text x="16" y="16" text-anchor="middle" dominant-baseline="central" font-family="system-ui,-apple-system,sans-serif" font-size="11" font-weight="600" fill="#F59E0B">KR</text> | ||
| </svg> No newline at end of file |
There was a problem hiding this comment.
SUGGESTION: Missing trailing newline at end of file
Add a newline character at the end of the file to conform with standard file conventions and prevent potential issues with diff tools or formatters.
| <circle cx="16" cy="16" r="14" fill="#06B6D4" opacity="0.15"/> | ||
| <circle cx="16" cy="16" r="14" fill="none" stroke="#06B6D4" stroke-width="2"/> | ||
| <text x="16" y="16" text-anchor="middle" dominant-baseline="central" font-family="system-ui,-apple-system,sans-serif" font-size="11" font-weight="600" fill="#06B6D4">LQ</text> | ||
| </svg> No newline at end of file |
There was a problem hiding this comment.
SUGGESTION: Missing trailing newline at end of file
Add a newline character at the end of the file to conform with standard file conventions and prevent potential issues with diff tools or formatters.
| <circle cx="16" cy="16" r="14" fill="#EF4444" opacity="0.15"/> | ||
| <circle cx="16" cy="16" r="14" fill="none" stroke="#EF4444" stroke-width="2"/> | ||
| <text x="16" y="16" text-anchor="middle" dominant-baseline="central" font-family="system-ui,-apple-system,sans-serif" font-size="11" font-weight="600" fill="#EF4444">MA</text> | ||
| </svg> No newline at end of file |
There was a problem hiding this comment.
SUGGESTION: Missing trailing newline at end of file
Add a newline character at the end of the file to conform with standard file conventions and prevent potential issues with diff tools or formatters.
| <circle cx="16" cy="16" r="14" fill="#7C3AED" opacity="0.15"/> | ||
| <circle cx="16" cy="16" r="14" fill="none" stroke="#7C3AED" stroke-width="2"/> | ||
| <text x="16" y="16" text-anchor="middle" dominant-baseline="central" font-family="system-ui,-apple-system,sans-serif" font-size="11" font-weight="600" fill="#7C3AED">NM</text> | ||
| </svg> No newline at end of file |
There was a problem hiding this comment.
SUGGESTION: Missing trailing newline at end of file
Add a newline character at the end of the file to conform with standard file conventions and prevent potential issues with diff tools or formatters.
| <circle cx="16" cy="16" r="14" fill="#3B82F6" opacity="0.15"/> | ||
| <circle cx="16" cy="16" r="14" fill="none" stroke="#3B82F6" stroke-width="2"/> | ||
| <text x="16" y="16" text-anchor="middle" dominant-baseline="central" font-family="system-ui,-apple-system,sans-serif" font-size="11" font-weight="600" fill="#3B82F6">PS</text> | ||
| </svg> No newline at end of file |
There was a problem hiding this comment.
SUGGESTION: Missing trailing newline at end of file
Add a newline character at the end of the file to conform with standard file conventions and prevent potential issues with diff tools or formatters.
| import KimiColorIcon from "@lobehub/icons/es/Kimi/components/Color"; | ||
| import KimiMonoIcon from "@lobehub/icons/es/Kimi/components/Mono"; | ||
| import LambdaMonoIcon from "@lobehub/icons/es/Lambda/components/Mono"; | ||
| import ArceeColorIcon from "@lobehub/icons/es/Arcee/components/Color"; |
There was a problem hiding this comment.
SUGGESTION: Import ordering is inconsistent
The Arcee imports are placed after Lambda (line 76), but alphabetically "Arcee" should appear much earlier in the import section (before IBM at line 70). The file appears to follow alphabetical ordering by component name throughout. Consider moving these imports to their correct alphabetical position to maintain consistency.
Code Review SummaryStatus: 8 Issues Found | Recommendation: Address before merge Overview
NotesThe PR was force-pushed since the previous review (commit
Issue Details (click to expand)SUGGESTION
Other Observations (not in diff)Issues found in unchanged code that cannot receive inline comments:
Files Reviewed (10 files)
Reviewed by qwen3.6-plus · 1,869,234 tokens |
There was a problem hiding this comment.
Code Review
This pull request adds support for seven new AI providers—Poolside, Arcee AI, InclusionAI, Liquid AI, Nomic, Krutrim, and MonsterAPI—by integrating their SVG icons, icon mappings, and provider configurations. The review feedback identifies several improvement opportunities, including the need to map provider aliases for consistent icon resolution, maintaining alphabetical order in imports and component definitions, and ensuring new providers are assigned to the correct functional categories for proper UI display.
| "poolside", | ||
| "arcee-ai", | ||
| "inclusionai", | ||
| "liquid", | ||
| "nomic", | ||
| "krutrim", | ||
| "monsterapi", |
There was a problem hiding this comment.
The providers arcee-ai, inclusionai, and monsterapi have aliases (arcee, inclusion, monster) defined in providers.ts. These aliases should also be included in KNOWN_SVGS to ensure that the fallback icons are correctly resolved when the alias is used instead of the full ID. I have also sorted the new entries alphabetically.
"arcee",
"arcee-ai",
"inclusion",
"inclusionai",
"krutrim",
"liquid",
"monster",
"monsterapi",
"nomic",
"poolside",
| "arcee-ai": "Arcee", | ||
| liquid: "Liquid", |
| import ArceeColorIcon from "@lobehub/icons/es/Arcee/components/Color"; | ||
| import ArceeMonoIcon from "@lobehub/icons/es/Arcee/components/Mono"; | ||
| import LiquidMonoIcon from "@lobehub/icons/es/Liquid/components/Mono"; |
| KiloCode: { mono: KiloCodeMonoIcon }, | ||
| Kimi: { mono: KimiMonoIcon, color: KimiColorIcon }, | ||
| Lambda: { mono: LambdaMonoIcon }, | ||
| Arcee: { mono: ArceeMonoIcon, color: ArceeColorIcon }, |
| passthroughModels: true, | ||
| authHint: "Get API key at monsterapi.ai", | ||
| }, | ||
| }; |
There was a problem hiding this comment.
|
Thanks for the detailed review — will add the trailing newlines and fix the alias mappings and alphabetical ordering. |
Co-Authored-By: OpenClaude (mimo-v2.5-pro) <openclaude@gitlawb.com>
6236063 to
3a277eb
Compare
| "brave", | ||
| "brave-search", | ||
| "cartesia", | ||
| "arcee-ai", |
There was a problem hiding this comment.
SUGGESTION: KNOWN_SVGS entries not in alphabetical order
The 7 new provider names are inserted as a block between "cartesia" and "clarifai", but alphabetically "arcee-ai" should appear before "brave", and "poolside" should appear much later. While Sets are unordered at runtime, maintaining alphabetical order improves readability and reduces future merge conflicts. Consider splitting these entries into their correct alphabetical positions within the Set.
c78a267
into
diegosouzapw:release/v3.8.2
|
Thank you for this contribution! 🎉 Your fix has been integrated into the upcoming v3.8.2 release. Great work! |
Summary
passthroughModels: true) withhasFree: true+ descriptivefreeNoteNew Providers
poolsidearcee-aiinclusionailiquidnomickrutrimmonsterapiFiles Modified
src/shared/constants/providers.ts— 7 provider definitions in APIKEY_PROVIDERSsrc/shared/components/lobeProviderIcons.ts— Arcee + Liquid lobe icon aliasessrc/shared/components/ProviderIcon.tsx— KNOWN_SVGS updatedpublic/providers/*.svg— 7 new SVG iconsTest plan
npm run lint— 0 errors (2073 warnings, all pre-existing)npm run typecheck:core— cleannpm run build— production build succeedsRelated Issues
Closes #2478
Context
This is Wave 1 of a provider expansion effort. Research from LiteLLM, OpenRouter, Portkey, one-api, new-api, and Higress identified ~50 providers OmniRoute is missing. Free-tier providers are highest priority for OmniRoute's value proposition.
Wave 2 (major companies), Wave 3 (content/video), and Wave 4 (niche) will follow in separate PRs.