Files
nexus/backend/Routing/ModelRoutingService.cs
T
AzuTear f5552218bc
CI - Build & Test / Backend (.NET) (push) Successful in 42s
CI - Build & Test / Frontend (Vue/TS) (push) Successful in 2m46s
CI - Build & Test / Security Check (push) Successful in 3s
CI - Build & Test / Deploy Nexus (push) Successful in 56s
feat: ship agent-first mission control v0.2.57
2026-07-31 22:39:47 +02:00

42 lines
1.5 KiB
C#

using Nexus.Api.Data;
using Nexus.Api.Services;
namespace Nexus.Api.Routing;
public sealed record RoutingTarget(
int Priority,
string Provider,
string Model,
string Purpose,
OperationalStatus Status,
string Detail);
public sealed class ModelRoutingService(
IOpenClawControlService openClaw)
{
public async Task<IReadOnlyCollection<RoutingTarget>> GetStatusAsync(
CancellationToken cancellationToken)
{
var response = await openClaw.GetModelsAsync(cancellationToken);
if (response.Items.Count == 0)
return Array.Empty<RoutingTarget>();
return response.Items
.OrderByDescending(model =>
string.Equals(model.Provider, "openai", StringComparison.OrdinalIgnoreCase))
.ThenBy(model => model.Name, StringComparer.OrdinalIgnoreCase)
.Select((model, index) => new RoutingTarget(
index + 1,
$"OpenClaw / {model.Provider}",
model.Id,
string.Equals(model.Provider, "openai", StringComparison.OrdinalIgnoreCase)
? "Primary agent runtime"
: "Configured Gateway fallback",
model.Available ? OperationalStatus.Online : OperationalStatus.Degraded,
model.Available
? "Configured and resolved by OpenClaw"
: model.Reason ?? "Configured in OpenClaw, currently unavailable"))
.ToArray();
}
}