File size: 1,267 Bytes
65d68f5 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 | import type { StudioToolId } from "@/components/dashboard/studioTools";
export type StudioGenerationRequestSummary = {
key: string;
toolId: StudioToolId;
toolLabel: string;
sourceIds: string[];
sourceTitle: string;
prompt: string;
isExpensive: boolean;
autoRetryCount: number;
};
const STUDIO_GENERATION_TOOL_ID_LIST: StudioToolId[] = [
"smart-notes",
"ai-quiz",
"flashcards",
"exam-answer",
"answer-correction",
"study-plan",
"last-night-prep",
"study-videos",
"what-to-study",
"exam-war-mode",
"pyq-intelligence",
];
export const STUDIO_GENERATION_TOOL_IDS = new Set<StudioToolId>(STUDIO_GENERATION_TOOL_ID_LIST);
export function isStudioGenerationTool(toolId: StudioToolId) {
return STUDIO_GENERATION_TOOL_IDS.has(toolId);
}
export function isExpensiveStudioTool(toolId: StudioToolId) {
return toolId === "study-videos";
}
export function normalizeStudioPrompt(prompt: string) {
return prompt.trim().replace(/\s+/g, " ");
}
export function buildStudioRequestKey({
toolId,
sourceIds,
prompt,
}: {
toolId: StudioToolId;
sourceIds: string[];
prompt: string;
}) {
return JSON.stringify({
toolId,
sourceIds: [...sourceIds].sort(),
prompt: normalizeStudioPrompt(prompt).toLowerCase(),
});
}
|