mirror of
https://github.com/NousResearch/hermes-agent.git
synced 2026-07-31 19:16:29 +00:00
feat(moa): add reference model toggles
This commit is contained in:
parent
ad6a2ae401
commit
ca294d3e62
12 changed files with 181 additions and 22 deletions
|
|
@ -2333,6 +2333,7 @@ export interface MoaModelSlot {
|
|||
model: string;
|
||||
/** Optional per-slot reasoning effort — round-tripped, not edited here. */
|
||||
reasoning_effort?: string;
|
||||
enabled?: boolean;
|
||||
}
|
||||
|
||||
export interface MoaConfigResponse {
|
||||
|
|
|
|||
|
|
@ -34,6 +34,7 @@ import { Spinner } from "@nous-research/ui/ui/components/spinner";
|
|||
import { Stats } from "@nous-research/ui/ui/components/stats";
|
||||
import { Card, CardContent, CardHeader, CardTitle } from "@nous-research/ui/ui/components/card";
|
||||
import { Badge } from "@nous-research/ui/ui/components/badge";
|
||||
import { Switch } from "@nous-research/ui/ui/components/switch";
|
||||
import { ConfirmDialog } from "@/components/ConfirmDialog";
|
||||
import { useModalBehavior } from "@/hooks/useModalBehavior";
|
||||
import { usePageHeader } from "@/contexts/usePageHeader";
|
||||
|
|
@ -855,13 +856,30 @@ function MoaModelsModal({
|
|||
<div className="space-y-2">
|
||||
<div className="text-display text-xs font-medium tracking-wider">Reference models</div>
|
||||
{preset.reference_models.map((slot, index) => (
|
||||
<div key={`${selected}-${slot.provider}-${slot.model}-${index}`} className="flex items-center gap-2 border border-border/50 bg-muted/20 px-3 py-2">
|
||||
<div
|
||||
key={`${selected}-${slot.provider}-${slot.model}-${index}`}
|
||||
className={cn(
|
||||
"flex items-center gap-2 border border-border/50 bg-muted/20 px-3 py-2",
|
||||
slot.enabled === false && "opacity-60"
|
||||
)}
|
||||
>
|
||||
<Switch
|
||||
checked={slot.enabled !== false}
|
||||
onCheckedChange={(checked) =>
|
||||
updateSelectedPreset((prev) => ({
|
||||
...prev,
|
||||
reference_models: prev.reference_models.map((s, i) =>
|
||||
i === index ? { ...s, enabled: checked === true } : s
|
||||
),
|
||||
}))
|
||||
}
|
||||
/>
|
||||
<div className="min-w-0 flex-1 truncate font-mono text-xs text-text-secondary">{slotLabel(slot)}</div>
|
||||
<Button size="sm" outlined onClick={() => setPicker({ kind: "reference", index })}>Change</Button>
|
||||
<Button size="sm" ghost disabled={preset.reference_models.length <= 1} onClick={() => updateSelectedPreset((prev) => ({ ...prev, reference_models: prev.reference_models.filter((_, i) => i !== index) }))}>Remove</Button>
|
||||
</div>
|
||||
))}
|
||||
<Button size="sm" outlined onClick={() => updateSelectedPreset((prev) => ({ ...prev, reference_models: [...prev.reference_models, prev.aggregator] }))}>Add reference model</Button>
|
||||
<Button size="sm" outlined onClick={() => updateSelectedPreset((prev) => ({ ...prev, reference_models: [...prev.reference_models, { ...prev.aggregator, enabled: true }] }))}>Add reference model</Button>
|
||||
</div>
|
||||
|
||||
<div className="space-y-2">
|
||||
|
|
@ -895,7 +913,7 @@ function MoaModelsModal({
|
|||
if (picker.kind === "aggregator") return { ...prev, aggregator: { provider, model } };
|
||||
return {
|
||||
...prev,
|
||||
reference_models: prev.reference_models.map((slot, i) => i === picker.index ? { provider, model } : slot),
|
||||
reference_models: prev.reference_models.map((slot, i) => i === picker.index ? { ...slot, provider, model } : slot),
|
||||
};
|
||||
});
|
||||
}}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue