mirror of
https://github.com/diegosouzapw/OmniRoute.git
synced 2026-08-17 12:42:21 +03:00
feat(providers): integrate audited free-tier gateways (#9210)
* feat(providers): add Zylo UnoRouter and Poolside registries * feat(providers): integrate audited free-tier gateways * feat: add wave2 free-tier provider registries * feat(providers): add Mixlayer Speka and TokenReply registries * feat: add wave 2 free-tier provider registries * fix: align meganova provider slug * feat(providers): integrate wave2 free-tier gateways * feat(providers): add Wave 3-A free-tier registries * feat(providers): add HelyxAI Auriko and Poixe registries * feat(providers): add Naga AI and Chat Oripe registries * feat(providers): integrate wave3 free-tier gateways * feat(providers): add FreeInference registry * feat(providers): add Free.ai registry * feat(providers): integrate wave4 free-tier gateways * docs: synchronize provider and free-tier inventories * refactor(providers): split audited gateway catalog * feat(providers): add audited Void AI and HelixMind gateways * feat(providers): finalize audited free-tier integration * test(providers): update APIKEY split count to 229 after rebase onto release/v3.8.50 The rebase merged the release catalog (201 APIKEY providers) with the PR's 28 free-tier additions, yielding 229 total. Correct the characterization count so the partition assertion reflects the true merged state. --------- Co-authored-by: diegosouzapw <diegosouzapw@users.noreply.github.com> Co-authored-by: backryun <bakryun0718@proton.me>
This commit is contained in:
committed by
GitHub
parent
f6ccd3cf9f
commit
ecc89eef14
@@ -38,6 +38,10 @@ function CoverageBarSkeleton(): JSX.Element {
|
||||
<div className="h-2 w-16 rounded bg-bg-subtle" />
|
||||
<div className="flex-1 h-2 rounded bg-bg-subtle" />
|
||||
</div>
|
||||
<div className="flex gap-2">
|
||||
<div className="h-2 w-16 rounded bg-bg-subtle" />
|
||||
<div className="flex-1 h-2 rounded bg-bg-subtle" />
|
||||
</div>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
@@ -189,8 +193,12 @@ export function AgentSkillsPageClient(): JSX.Element {
|
||||
});
|
||||
|
||||
const selectedMarkdown = selectedId ? (markdownCache.get(selectedId) ?? null) : null;
|
||||
const coverageTotal = coverage !== null ? coverage.api.have + coverage.cli.have : null;
|
||||
const showGenerateButton = coverageTotal !== null && coverageTotal < 42;
|
||||
const coverageTotal =
|
||||
coverage !== null ? coverage.api.have + coverage.cli.have + coverage.config.have : null;
|
||||
const catalogTotal =
|
||||
coverage !== null ? coverage.api.total + coverage.cli.total + coverage.config.total : null;
|
||||
const showGenerateButton =
|
||||
coverageTotal !== null && catalogTotal !== null && coverageTotal < catalogTotal;
|
||||
|
||||
return (
|
||||
<div className="flex flex-col gap-4">
|
||||
|
||||
@@ -23,7 +23,7 @@ function trackColor(have: number, total: number): string {
|
||||
|
||||
export function CoverageBar({ coverage }: CoverageBarProps): JSX.Element {
|
||||
const t = useTranslations("agentSkills");
|
||||
const { api, cli } = coverage;
|
||||
const { api, cli, config } = coverage;
|
||||
|
||||
return (
|
||||
<div className="flex flex-col gap-2 text-xs" data-testid="coverage-bar">
|
||||
@@ -49,6 +49,28 @@ export function CoverageBar({ coverage }: CoverageBarProps): JSX.Element {
|
||||
</span>
|
||||
</div>
|
||||
|
||||
<div className="flex items-center justify-between gap-2">
|
||||
<span className="font-medium text-text-muted shrink-0">
|
||||
{t("categoryConfig")} {config.have}/{config.total}
|
||||
</span>
|
||||
<div
|
||||
className={`flex-1 h-2 rounded-full overflow-hidden ${trackColor(config.have, config.total)}`}
|
||||
>
|
||||
<div
|
||||
role="progressbar"
|
||||
aria-valuenow={config.have}
|
||||
aria-valuemin={0}
|
||||
aria-valuemax={config.total}
|
||||
aria-label={`${t("categoryConfig")} ${config.have}/${config.total}`}
|
||||
className={`h-full rounded-full transition-all duration-500 ${barColor(config.have, config.total)}`}
|
||||
style={{ width: `${config.total > 0 ? (config.have / config.total) * 100 : 0}%` }}
|
||||
/>
|
||||
</div>
|
||||
<span className="shrink-0 text-text-muted w-12 text-right">
|
||||
{config.total > 0 ? Math.round((config.have / config.total) * 100) : 0}%
|
||||
</span>
|
||||
</div>
|
||||
|
||||
<div className="flex items-center justify-between gap-2">
|
||||
<span className="font-medium text-text-muted shrink-0">
|
||||
{t("categoryCli")} {cli.have}/{cli.total}
|
||||
|
||||
Reference in New Issue
Block a user