refactor: share session plugin line filtering

This commit is contained in:
Peter Steinberger
2026-04-20 14:11:55 +01:00
parent 100e587243
commit b79df1796c

View File

@@ -263,38 +263,32 @@ function isSessionPluginTraceLine(line: string): boolean {
return trimmed.startsWith("🔎 ") || /(?:^|\s)(?:Debug|Trace):/.test(trimmed);
}
export function resolveSessionPluginStatusLines(
function resolveSessionPluginLines(
entry: Pick<SessionEntry, "pluginDebugEntries"> | undefined,
includeLine: (line: string) => boolean,
): string[] {
return Array.isArray(entry?.pluginDebugEntries)
? entry.pluginDebugEntries.flatMap((pluginEntry) =>
Array.isArray(pluginEntry?.lines)
? pluginEntry.lines.filter(
(line): line is string =>
typeof line === "string" &&
line.trim().length > 0 &&
!isSessionPluginTraceLine(line),
typeof line === "string" && line.trim().length > 0 && includeLine(line),
)
: [],
)
: [];
}
export function resolveSessionPluginStatusLines(
entry: Pick<SessionEntry, "pluginDebugEntries"> | undefined,
): string[] {
return resolveSessionPluginLines(entry, (line) => !isSessionPluginTraceLine(line));
}
export function resolveSessionPluginTraceLines(
entry: Pick<SessionEntry, "pluginDebugEntries"> | undefined,
): string[] {
return Array.isArray(entry?.pluginDebugEntries)
? entry.pluginDebugEntries.flatMap((pluginEntry) =>
Array.isArray(pluginEntry?.lines)
? pluginEntry.lines.filter(
(line): line is string =>
typeof line === "string" &&
line.trim().length > 0 &&
isSessionPluginTraceLine(line),
)
: [],
)
: [];
return resolveSessionPluginLines(entry, isSessionPluginTraceLine);
}
export function normalizeSessionRuntimeModelFields(entry: SessionEntry): SessionEntry {