mirror of
https://github.com/openclaw/openclaw.git
synced 2026-05-06 17:50:45 +00:00
fix: expose agent runtime status metadata
This commit is contained in:
@@ -426,7 +426,8 @@ async function executeAgents(client: GatewayBrowserClient): Promise<SlashCommand
|
||||
const isDefault = agent.id === result?.defaultId;
|
||||
const name = agent.identity?.name || agent.name || agent.id;
|
||||
const marker = isDefault ? " *(default)*" : "";
|
||||
lines.push(`- \`${agent.id}\` — ${name}${marker}`);
|
||||
const runtime = agent.agentRuntime?.id ? ` · runtime \`${agent.agentRuntime.id}\`` : "";
|
||||
lines.push(`- \`${agent.id}\` — ${name}${marker}${runtime}`);
|
||||
}
|
||||
return { content: lines.join("\n") };
|
||||
} catch (err) {
|
||||
|
||||
@@ -11,6 +11,7 @@ import {
|
||||
normalizeModelValue,
|
||||
parseFallbackList,
|
||||
resolveAgentConfig,
|
||||
resolveAgentRuntimeLabel,
|
||||
resolveModelFallbacks,
|
||||
resolveModelLabel,
|
||||
resolveModelPrimary,
|
||||
@@ -64,6 +65,7 @@ export function renderAgentOverview(params: {
|
||||
: config.defaults?.model
|
||||
? resolveModelLabel(config.defaults?.model)
|
||||
: resolveModelLabel(agentModel);
|
||||
const runtime = resolveAgentRuntimeLabel(agent.agentRuntime);
|
||||
const defaultModel = resolveModelLabel(config.defaults?.model ?? agentModel);
|
||||
const entryPrimary = resolveModelPrimary(config.entry?.model);
|
||||
const defaultPrimary =
|
||||
@@ -121,6 +123,10 @@ export function renderAgentOverview(params: {
|
||||
<div class="label">Primary Model</div>
|
||||
<div class="mono">${model}</div>
|
||||
</div>
|
||||
<div class="agent-kv">
|
||||
<div class="label">Runtime</div>
|
||||
<div class="mono">${runtime}</div>
|
||||
</div>
|
||||
<div class="agent-kv">
|
||||
<div class="label">Skills Filter</div>
|
||||
<div>${skillFilter ? `${skillCount} selected` : "all skills"}</div>
|
||||
|
||||
@@ -112,6 +112,10 @@ function renderAgentContextCard(
|
||||
<div class="label">Primary Model</div>
|
||||
<div class="mono">${context.model}</div>
|
||||
</div>
|
||||
<div class="agent-kv">
|
||||
<div class="label">Runtime</div>
|
||||
<div class="mono">${context.runtime}</div>
|
||||
</div>
|
||||
<div class="agent-kv">
|
||||
<div class="label">Identity Name</div>
|
||||
<div>${context.identityName}</div>
|
||||
|
||||
@@ -204,6 +204,7 @@ describe("buildAgentContext", () => {
|
||||
primary: "openai/gpt-5.5",
|
||||
fallbacks: ["openai-codex/gpt-5.2-codex"],
|
||||
},
|
||||
agentRuntime: { id: "claude-cli", fallback: "none", source: "agent" },
|
||||
},
|
||||
null,
|
||||
null,
|
||||
@@ -213,6 +214,7 @@ describe("buildAgentContext", () => {
|
||||
|
||||
expect(context.workspace).toBe("/tmp/agent-workspace");
|
||||
expect(context.model).toBe("openai/gpt-5.5 (+1 fallback)");
|
||||
expect(context.runtime).toBe("claude-cli (fallback none)");
|
||||
expect(context.isDefault).toBe(true);
|
||||
});
|
||||
|
||||
|
||||
@@ -167,6 +167,7 @@ type AgentConfigEntry = {
|
||||
workspace?: string;
|
||||
agentDir?: string;
|
||||
model?: unknown;
|
||||
agentRuntime?: unknown;
|
||||
skills?: string[];
|
||||
tools?: {
|
||||
profile?: string;
|
||||
@@ -386,6 +387,7 @@ export function resolveAgentConfig(config: Record<string, unknown> | null, agent
|
||||
export type AgentContext = {
|
||||
workspace: string;
|
||||
model: string;
|
||||
runtime: string;
|
||||
identityName: string;
|
||||
identityAvatar: string;
|
||||
skillsLabel: string;
|
||||
@@ -413,6 +415,7 @@ export function buildAgentContext(
|
||||
: config.defaults?.model
|
||||
? resolveModelLabel(config.defaults?.model)
|
||||
: resolveModelLabel(agent.model);
|
||||
const runtime = resolveAgentRuntimeLabel(agent.agentRuntime);
|
||||
const identityName =
|
||||
normalizeOptionalString(agent.identity?.name) ||
|
||||
normalizeOptionalString(agent.name) ||
|
||||
@@ -427,6 +430,7 @@ export function buildAgentContext(
|
||||
return {
|
||||
workspace,
|
||||
model: modelLabel,
|
||||
runtime,
|
||||
identityName,
|
||||
identityAvatar,
|
||||
skillsLabel: skillFilter ? `${skillCount} selected` : "all skills",
|
||||
@@ -434,6 +438,14 @@ export function buildAgentContext(
|
||||
};
|
||||
}
|
||||
|
||||
export function resolveAgentRuntimeLabel(
|
||||
agentRuntime?: AgentsListResult["agents"][number]["agentRuntime"],
|
||||
): string {
|
||||
const id = normalizeOptionalString(agentRuntime?.id) ?? "pi";
|
||||
const fallback = normalizeOptionalString(agentRuntime?.fallback);
|
||||
return fallback ? `${id} (fallback ${fallback})` : id;
|
||||
}
|
||||
|
||||
export function resolveModelLabel(model?: unknown): string {
|
||||
if (!model) {
|
||||
return "-";
|
||||
|
||||
Reference in New Issue
Block a user