swarm-ui: show the inference settings and resource caps on one wrapping line each
This commit is contained in:
parent
e70560c0ad
commit
369946169c
6 changed files with 83 additions and 79 deletions
|
|
@ -1,4 +1,4 @@
|
|||
/* <AgentInference> — one setting per line: badge, then where it comes from. */
|
||||
/* <AgentInference> — the settings in one wrapping line: each badge, then where it comes from. */
|
||||
.ui-agent-inference {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
|
|
@ -6,17 +6,16 @@
|
|||
gap: 0.3em;
|
||||
}
|
||||
.ui-agent-inference-list {
|
||||
display: contents;
|
||||
list-style: none;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
display: grid;
|
||||
gap: 0.3em;
|
||||
}
|
||||
.ui-agent-inference-list li {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 0.5em;
|
||||
flex-wrap: wrap;
|
||||
display: contents;
|
||||
}
|
||||
.ui-agent-inference-source {
|
||||
margin-left: -0.25em;
|
||||
}
|
||||
.ui-agent-inference-source,
|
||||
.ui-agent-inference-muted {
|
||||
|
|
|
|||
|
|
@ -222,62 +222,66 @@ export function AgentInference({ agent }: { agent: string }) {
|
|||
return (
|
||||
<div class="ui-agent-inference">
|
||||
{errorPanel}
|
||||
<ul class="ui-agent-inference-list">
|
||||
<li>
|
||||
{effective ? (
|
||||
<>
|
||||
<Badge label="model" value={effective.model} />
|
||||
<span class="ui-agent-inference-source">
|
||||
{SOURCE_LABEL[effective.model_source]}
|
||||
</span>
|
||||
</>
|
||||
) : (
|
||||
<div class="ui-badge-row">
|
||||
<ul class="ui-agent-inference-list">
|
||||
<li>
|
||||
{effective ? (
|
||||
<>
|
||||
<Badge label="model" value={effective.model} />
|
||||
<span class="ui-agent-inference-source">
|
||||
{SOURCE_LABEL[effective.model_source]}
|
||||
</span>
|
||||
</>
|
||||
) : (
|
||||
<Badge
|
||||
label="model"
|
||||
value={configured?.model ?? "its own"}
|
||||
title="the agent has not reported what it runs on yet"
|
||||
/>
|
||||
)}
|
||||
</li>
|
||||
<li>
|
||||
{effective ? (
|
||||
<>
|
||||
<Badge label="effort" value={effective.effort} />
|
||||
<span class="ui-agent-inference-source">
|
||||
{SOURCE_LABEL[effective.effort_source]}
|
||||
</span>
|
||||
</>
|
||||
) : (
|
||||
<Badge
|
||||
label="effort"
|
||||
value={configured?.effort ?? "its own"}
|
||||
title="the agent has not reported what it runs on yet"
|
||||
/>
|
||||
)}
|
||||
</li>
|
||||
<li>
|
||||
<Badge
|
||||
label="model"
|
||||
value={configured?.model ?? "its own"}
|
||||
title="the agent has not reported what it runs on yet"
|
||||
label="subagent models"
|
||||
value={
|
||||
swarmModels.length > 0 ? swarmModels.join(", ") : "its own"
|
||||
}
|
||||
/>
|
||||
)}
|
||||
</li>
|
||||
<li>
|
||||
{effective ? (
|
||||
<>
|
||||
<Badge label="effort" value={effective.effort} />
|
||||
<span class="ui-agent-inference-source">
|
||||
{SOURCE_LABEL[effective.effort_source]}
|
||||
</span>
|
||||
</>
|
||||
) : (
|
||||
</li>
|
||||
<li>
|
||||
<Badge
|
||||
label="effort"
|
||||
value={configured?.effort ?? "its own"}
|
||||
title="the agent has not reported what it runs on yet"
|
||||
label="max subagents"
|
||||
value={
|
||||
configured?.max_subagents === 0
|
||||
? "0 (no subagents)"
|
||||
: String(configured?.max_subagents ?? "no cap")
|
||||
}
|
||||
/>
|
||||
)}
|
||||
</li>
|
||||
<li>
|
||||
<Badge
|
||||
label="subagent models"
|
||||
value={swarmModels.length > 0 ? swarmModels.join(", ") : "its own"}
|
||||
/>
|
||||
</li>
|
||||
<li>
|
||||
<Badge
|
||||
label="max subagents"
|
||||
value={
|
||||
configured?.max_subagents === 0
|
||||
? "0 (no subagents)"
|
||||
: String(configured?.max_subagents ?? "no cap")
|
||||
}
|
||||
/>
|
||||
</li>
|
||||
</ul>
|
||||
<Badge
|
||||
variant="quiet"
|
||||
value="edit"
|
||||
title={`set the swarm's model, effort, subagent models and subagent cap for ${agent}`}
|
||||
onClick={() => setEditing(true)}
|
||||
/>
|
||||
</li>
|
||||
</ul>
|
||||
<Badge
|
||||
variant="quiet"
|
||||
value="edit"
|
||||
title={`set the swarm's model, effort, subagent models and subagent cap for ${agent}`}
|
||||
onClick={() => setEditing(true)}
|
||||
/>
|
||||
</div>
|
||||
<Dialog
|
||||
open={editing}
|
||||
onClose={() => setEditing(false)}
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
/* <AgentLimits> — one cap per line, then the edit action. */
|
||||
/* <AgentLimits> — the caps and the edit action in one wrapping line. */
|
||||
.ui-agent-limits {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
|
|
@ -6,11 +6,10 @@
|
|||
gap: 0.3em;
|
||||
}
|
||||
.ui-agent-limits-list {
|
||||
display: contents;
|
||||
list-style: none;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
display: grid;
|
||||
gap: 0.3em;
|
||||
}
|
||||
.ui-agent-limits-muted {
|
||||
color: var(--muted);
|
||||
|
|
|
|||
|
|
@ -138,20 +138,22 @@ export function AgentLimits({ agent }: { agent: string }) {
|
|||
return (
|
||||
<div class="ui-agent-limits">
|
||||
{errorPanel}
|
||||
<ul class="ui-agent-limits-list">
|
||||
<li>
|
||||
<Badge label="cpu quota" value={caps.cpu_quota ?? HIVE_DECIDES} />
|
||||
</li>
|
||||
<li>
|
||||
<Badge label="memory max" value={caps.memory_max ?? HIVE_DECIDES} />
|
||||
</li>
|
||||
</ul>
|
||||
<Badge
|
||||
variant="quiet"
|
||||
value="edit"
|
||||
title={`set the swarm's CPU and memory caps for ${agent}`}
|
||||
onClick={() => setEditing(true)}
|
||||
/>
|
||||
<div class="ui-badge-row">
|
||||
<ul class="ui-agent-limits-list">
|
||||
<li>
|
||||
<Badge label="cpu quota" value={caps.cpu_quota ?? HIVE_DECIDES} />
|
||||
</li>
|
||||
<li>
|
||||
<Badge label="memory max" value={caps.memory_max ?? HIVE_DECIDES} />
|
||||
</li>
|
||||
</ul>
|
||||
<Badge
|
||||
variant="quiet"
|
||||
value="edit"
|
||||
title={`set the swarm's CPU and memory caps for ${agent}`}
|
||||
onClick={() => setEditing(true)}
|
||||
/>
|
||||
</div>
|
||||
<Dialog
|
||||
open={editing}
|
||||
onClose={() => setEditing(false)}
|
||||
|
|
|
|||
|
|
@ -136,7 +136,7 @@ export function AllowedDomains({ agent }: { agent: string }) {
|
|||
return (
|
||||
<div class="ui-agent-limits">
|
||||
{errorPanel}
|
||||
<div class="ui-badge-popover-row">
|
||||
<div class="ui-badge-row">
|
||||
{shown.length === 0 ? (
|
||||
<Badge label="allowed domains" value="none added" />
|
||||
) : null}
|
||||
|
|
|
|||
|
|
@ -25,8 +25,8 @@
|
|||
display: grid;
|
||||
gap: 0.3em;
|
||||
}
|
||||
/* A line of badge popovers that wraps when it runs out of room. */
|
||||
.ui-badge-popover-row {
|
||||
/* A line of badges that wraps when it runs out of room. */
|
||||
.ui-badge-row {
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
align-items: center;
|
||||
|
|
|
|||
Loading…
Reference in a new issue