github-actions
Sync from GitHub 2025-12-17T12:18:53Z
5a3b322
export type ChatRequest = {
query: string;
clarification_answer?: string | null;
verbose?: boolean;
};
export type RecommendRequest = {
query: string;
llm_model?: string | null;
verbose?: boolean;
};
export async function fetchChat(base: string, body: ChatRequest, signal?: AbortSignal) {
return request(`${base.replace(/\/$/, "")}/chat`, body, signal);
}
export async function fetchRecommend(base: string, body: RecommendRequest, signal?: AbortSignal) {
return request(`${base.replace(/\/$/, "")}/recommend`, body, signal);
}
async function request(url: string, body: any, signal?: AbortSignal) {
const controller = new AbortController();
const timeout = setTimeout(() => controller.abort(), 30000);
try {
const res = await fetch(url, {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify(body),
signal: signal || controller.signal,
});
if (!res.ok) {
const text = await res.text();
throw new Error(`HTTP ${res.status}: ${text}`);
}
return res.json();
} finally {
clearTimeout(timeout);
}
}