Fix thread title context type narrowing

This commit is contained in:
murashit 2026-06-15 14:04:25 +09:00
parent e27dd98448
commit ba7c8c3235

View file

@ -7,15 +7,8 @@ const MAX_CONTEXT_CHARS = 4_000;
export function threadTitleContextFromMessageStreamItems(turnId: string, items: readonly MessageStreamItem[]): ThreadTitleContext | null {
const turnItems = items.filter((item) => item.turnId === turnId);
const userRequest =
turnItems.find((item) => item.kind === "message" && item.role === "user")?.text.trim() ??
precedingUnscopedTitleSeed(turnId, items) ??
"";
const assistantResponse =
[...turnItems]
.reverse()
.find((item): item is MessageStreamMessageItem => item.kind === "message" && isCompletedTurnOutcomeMessage(item))
?.text.trim() ?? "";
const userRequest = turnItems.find(isUserMessageStreamItem)?.text.trim() ?? precedingUnscopedTitleSeed(turnId, items) ?? "";
const assistantResponse = [...turnItems].reverse().find(isCompletedTurnOutcomeMessageItem)?.text.trim() ?? "";
if (!userRequest || !assistantResponse) return null;
return {
userRequest: truncateForPrompt(userRequest),
@ -34,6 +27,14 @@ export function firstThreadTitleContextFromMessageStreamItems(items: readonly Me
return null;
}
function isUserMessageStreamItem(item: MessageStreamItem): item is MessageStreamMessageItem & { role: "user" } {
return item.kind === "message" && item.role === "user";
}
function isCompletedTurnOutcomeMessageItem(item: MessageStreamItem): item is MessageStreamMessageItem {
return item.kind === "message" && isCompletedTurnOutcomeMessage(item);
}
function precedingUnscopedTitleSeed(turnId: string, items: readonly MessageStreamItem[]): string | null {
const firstTurnItemIndex = items.findIndex((item) => item.turnId === turnId);
if (firstTurnItemIndex < 1) return null;