32f098a6fc
* fix: show question icon only for pending input * fix: address pending input review feedback * fix: reduce pending input sidebar complexity * fix: address clarification review comments * test: cover pending clarification hook
28 lines
1.0 KiB
TypeScript
28 lines
1.0 KiB
TypeScript
import type { ClarificationRequestMetadata, Message } from "@/lib/types/http";
|
|
|
|
export function isPendingClarificationMessage(message: Message): boolean {
|
|
if (message.type !== "clarification_request") return false;
|
|
const metadata = message.metadata as ClarificationRequestMetadata | undefined;
|
|
return !metadata?.status || metadata.status === "pending";
|
|
}
|
|
|
|
export function findPendingClarification(messages?: readonly Message[] | null): Message | null {
|
|
if (!messages) return null;
|
|
for (let i = messages.length - 1; i >= 0; i--) {
|
|
if (isPendingClarificationMessage(messages[i])) return messages[i];
|
|
}
|
|
return null;
|
|
}
|
|
|
|
export function hasPendingClarification(messages?: readonly Message[] | null): boolean {
|
|
return findPendingClarification(messages) !== null;
|
|
}
|
|
|
|
export function hasPendingClarificationForSession(
|
|
messagesBySession: Record<string, readonly Message[] | undefined>,
|
|
sessionId?: string | null,
|
|
): boolean {
|
|
if (!sessionId) return false;
|
|
return hasPendingClarification(messagesBySession[sessionId]);
|
|
}
|