perf(site/src/pages/AgentsPage): combine array iterations (#25614)

This commit is contained in:
Danielle Maywood
2026-05-22 14:23:22 +01:00
committed by GitHub
parent e71710df37
commit 15e63dec6f
4 changed files with 51 additions and 42 deletions
@@ -32,13 +32,13 @@ const buildOrderedMessageIDs = (
// still exists in a later page). The Map-based messagesByID
// already deduplicates, but orderedMessageIDs must match.
const seen = new Set<number>();
return sorted
.map((message) => message.id)
.filter((id) => {
if (seen.has(id)) return false;
seen.add(id);
return true;
});
const orderedMessageIDs: number[] = [];
for (const message of sorted) {
if (seen.has(message.id)) continue;
seen.add(message.id);
orderedMessageIDs.push(message.id);
}
return orderedMessageIDs;
};
const mapsEqualByRef = <K, V>(left: Map<K, V>, right: Map<K, V>): boolean => {
@@ -78,13 +78,17 @@ const MCPIcon: FC<{ iconUrl: string; name: string; className?: string }> = ({
export const getDefaultMCPSelection = (
servers: readonly TypesGen.MCPServerConfig[],
): string[] => {
return servers
.filter(
(s) =>
s.enabled &&
(s.availability === "force_on" || s.availability === "default_on"),
)
.map((s) => s.id);
const ids: string[] = [];
for (const server of servers) {
if (
server.enabled &&
(server.availability === "force_on" ||
server.availability === "default_on")
) {
ids.push(server.id);
}
}
return ids;
};
/** localStorage key for persisting the user's MCP server selection. */
@@ -113,13 +117,15 @@ export const mcpSelectionStorageKey = "agents.selected-mcp-server-ids";
if (!Array.isArray(parsed)) {
return null;
}
const enabledIds = new Set(
servers.filter((s) => s.enabled).map((s) => s.id),
);
// Always include force_on servers even if the user didn't save them.
const forceOnIds = servers
.filter((s) => s.enabled && s.availability === "force_on")
.map((s) => s.id);
const enabledIds = new Set<string>();
const forceOnIds: string[] = [];
for (const server of servers) {
if (!server.enabled) continue;
enabledIds.add(server.id);
if (server.availability === "force_on") {
forceOnIds.push(server.id);
}
}
const restored = parsed.filter(
(id): id is string => typeof id === "string" && enabledIds.has(id),
);
@@ -41,12 +41,13 @@ export const getQueuedMessageInfo = (
): QueuedMessageInfo => {
const { content } = message;
const fileBlocks = content.filter((p) => p.type === "file");
const rawText = content
.filter((p) => p.type === "text")
.map((p) => p.text)
.filter((t): t is string => Boolean(t?.trim()))
.join(" ")
.trim();
const textParts: string[] = [];
for (const part of content) {
if (part.type === "text" && part.text?.trim()) {
textParts.push(part.text);
}
}
const rawText = textParts.join(" ").trim();
if (rawText) {
return {
@@ -60,22 +60,24 @@ export const filterPersonalSkills = (
return skills.toSorted((a, b) => a.name.localeCompare(b.name, "en-US"));
}
return skills
.map((skill, index): RankedPersonalSkill => {
const name = skill.name.toLocaleLowerCase("en-US");
const description = skill.description.toLocaleLowerCase("en-US");
let rank = Number.POSITIVE_INFINITY;
if (name.startsWith(normalizedQuery)) {
rank = 0;
} else if (name.includes(normalizedQuery)) {
rank = 1;
} else if (description.includes(normalizedQuery)) {
rank = 2;
}
const rankedSkills: RankedPersonalSkill[] = [];
for (const [index, skill] of skills.entries()) {
const name = skill.name.toLocaleLowerCase("en-US");
const description = skill.description.toLocaleLowerCase("en-US");
let rank: number | undefined;
if (name.startsWith(normalizedQuery)) {
rank = 0;
} else if (name.includes(normalizedQuery)) {
rank = 1;
} else if (description.includes(normalizedQuery)) {
rank = 2;
}
if (rank !== undefined) {
rankedSkills.push({ skill, rank, index });
}
}
return { skill, rank, index };
})
.filter(({ rank }) => Number.isFinite(rank))
return rankedSkills
.toSorted((a, b) => {
if (a.rank !== b.rank) {
return a.rank - b.rank;