fix(ui): address review feedback on chat infra slice

- export.ts: handle array content blocks (Claude API format) instead
  of silently exporting empty strings
- slash-command-executor.ts: restrict /kill all to current session's
  subagent subtree instead of all sessions globally
- slash-command-executor.ts: only count truly aborted runs (check
  aborted !== false) in /kill summary
This commit is contained in:
Val Alexander
2026-03-09 18:09:37 -05:00
parent d648dd7643
commit 8a6cd808a1

View File

@@ -296,9 +296,14 @@ async function executeKill(
}
const results = await Promise.allSettled(
matched.map((key) => client.request("chat.abort", { sessionKey: key })),
matched.map((key) =>
client.request<{ aborted?: boolean }>("chat.abort", { sessionKey: key }),
),
);
const successCount = results.filter((entry) => entry.status === "fulfilled").length;
const successCount = results.filter(
(entry) =>
entry.status === "fulfilled" && (entry.value as { aborted?: boolean })?.aborted !== false,
).length;
if (successCount === 0) {
const firstFailure = results.find((entry) => entry.status === "rejected");
throw firstFailure?.reason ?? new Error("abort failed");
@@ -343,15 +348,16 @@ function resolveKillTargets(
}
const normalizedKey = key.toLowerCase();
const parsed = parseAgentSessionKey(normalizedKey);
// For "all", only match subagents belonging to the current session's agent
const belongsToCurrentSession =
currentParsed?.agentId != null && parsed?.agentId === currentParsed.agentId;
const isMatch =
normalizedTarget === "all" ||
(normalizedTarget === "all" && belongsToCurrentSession) ||
normalizedKey === normalizedTarget ||
(parsed?.agentId ?? "") === normalizedTarget ||
normalizedKey.endsWith(`:subagent:${normalizedTarget}`) ||
normalizedKey === `subagent:${normalizedTarget}` ||
(currentParsed?.agentId != null &&
parsed?.agentId === currentParsed.agentId &&
normalizedKey.endsWith(`:subagent:${normalizedTarget}`));
(belongsToCurrentSession && normalizedKey.endsWith(`:subagent:${normalizedTarget}`));
if (isMatch) {
keys.add(key);
}