feat: expand subagent status visibility

This commit is contained in:
Peter Steinberger
2026-01-18 04:44:52 +00:00
parent 1ae415e395
commit b105745299
11 changed files with 643 additions and 1 deletions

View File

@@ -3,12 +3,14 @@ import {
resolveDefaultAgentId,
resolveSessionAgentId,
} from "../../agents/agent-scope.js";
import { listSubagentRunsForRequester } from "../../agents/subagent-registry.js";
import {
ensureAuthProfileStore,
resolveAuthProfileDisplayLabel,
resolveAuthProfileOrder,
} from "../../agents/auth-profiles.js";
import { getCustomProviderApiKey, resolveEnvApiKey } from "../../agents/model-auth.js";
import { resolveInternalSessionKey, resolveMainSessionAlias } from "../../agents/tools/sessions-helpers.js";
import { normalizeProviderId } from "../../agents/model-selection.js";
import type { ClawdbotConfig } from "../../config/config.js";
import type { SessionEntry, SessionScope } from "../../config/sessions.js";
@@ -171,6 +173,30 @@ export async function buildStatusReply(params: {
const queueOverrides = Boolean(
sessionEntry?.queueDebounceMs ?? sessionEntry?.queueCap ?? sessionEntry?.queueDrop,
);
let subagentsLine: string | undefined;
if (sessionKey) {
const { mainKey, alias } = resolveMainSessionAlias(cfg);
const requesterKey = resolveInternalSessionKey({ key: sessionKey, alias, mainKey });
const runs = listSubagentRunsForRequester(requesterKey);
const verboseEnabled = resolvedVerboseLevel && resolvedVerboseLevel !== "off";
if (runs.length === 0) {
if (verboseEnabled) subagentsLine = "🤖 Subagents: none";
} else {
const active = runs.filter((entry) => !entry.endedAt);
const done = runs.length - active.length;
if (verboseEnabled) {
const labels = active
.map((entry) => entry.label?.trim() || entry.task?.trim() || "")
.filter(Boolean)
.slice(0, 3);
const labelText = labels.length ? ` (${labels.join(", ")})` : "";
subagentsLine = `🤖 Subagents: ${active.length} active${labelText} · ${done} done`;
} else if (active.length > 0) {
subagentsLine = `🤖 Subagents: ${active.length} active`;
}
}
}
const groupActivation = isGroup
? (normalizeGroupActivation(sessionEntry?.groupActivation) ?? defaultGroupActivation())
: undefined;
@@ -206,6 +232,7 @@ export async function buildStatusReply(params: {
dropPolicy: queueSettings.dropPolicy,
showDetails: queueOverrides,
},
subagentsLine,
mediaDecisions: params.mediaDecisions,
includeTranscriptUsage: false,
});