From c6caf88fdac98d979b1879f976c1679e64649623 Mon Sep 17 00:00:00 2001 From: aadesh18 <110230993+aadesh18@users.noreply.github.com> Date: Mon, 23 Feb 2026 18:53:37 -0800 Subject: [PATCH] bug fixes --- apps/dashboard/src/app/api/ai-search/route.ts | 52 +++++++++++-------- .../backend/endpoints/api/v1/ai-query.test.ts | 5 +- 2 files changed, 34 insertions(+), 23 deletions(-) diff --git a/apps/dashboard/src/app/api/ai-search/route.ts b/apps/dashboard/src/app/api/ai-search/route.ts index db61fe412..35f023874 100644 --- a/apps/dashboard/src/app/api/ai-search/route.ts +++ b/apps/dashboard/src/app/api/ai-search/route.ts @@ -35,32 +35,40 @@ export async function POST(req: Request) { getPublicEnvVar("NEXT_PUBLIC_STACK_API_URL") ?? throwErr("Backend API URL is not configured (NEXT_PUBLIC_STACK_API_URL)"); - const requestHeaders: Record = { - "content-type": "application/json", + const useAdminAuth = projectId != null && hasProjectAccess && accessToken != null; + + const makeRequest = async (withAuth: boolean) => { + const requestHeaders: Record = { + "content-type": "application/json", + }; + + if (withAuth && projectId != null && accessToken != null) { + requestHeaders["x-stack-access-type"] = "admin"; + requestHeaders["x-stack-project-id"] = projectId; + requestHeaders["x-stack-admin-access-token"] = accessToken; + } + + return await fetch( + `${backendBaseUrl}/api/latest/ai/query/stream`, + { + method: "POST", + headers: requestHeaders, + body: JSON.stringify({ + quality: "smart", + speed: "fast", + tools: withAuth ? tools : ["docs"], + systemPrompt: "command-center-ask-ai", + messages: modelMessages, + }), + } + ); }; - - if (projectId && hasProjectAccess && accessToken) { - requestHeaders["x-stack-access-type"] = "admin"; - requestHeaders["x-stack-project-id"] = projectId; - requestHeaders["x-stack-admin-access-token"] = accessToken; + let backendResponse = await makeRequest(useAdminAuth); + if (!backendResponse.ok && useAdminAuth) { + backendResponse = await makeRequest(false); } - const backendResponse = await fetch( - `${backendBaseUrl}/api/latest/ai/query/stream`, - { - method: "POST", - headers: requestHeaders, - body: JSON.stringify({ - quality: "smart", - speed: "fast", - tools, - systemPrompt: "command-center-ask-ai", - messages: modelMessages, - }), - } - ); - if (!backendResponse.ok) { const error = await backendResponse.json().catch(() => ({ error: "Unknown error" })); return new Response(JSON.stringify(error), { diff --git a/apps/e2e/tests/backend/endpoints/api/v1/ai-query.test.ts b/apps/e2e/tests/backend/endpoints/api/v1/ai-query.test.ts index fb3e0f298..364beb781 100644 --- a/apps/e2e/tests/backend/endpoints/api/v1/ai-query.test.ts +++ b/apps/e2e/tests/backend/endpoints/api/v1/ai-query.test.ts @@ -25,7 +25,10 @@ describe("AI Query Endpoint - Validation", () => { }); expect(response.status).toBe(400); - expect(response.body).toEqual(expect.stringContaining("must be one of the following values: stream, generate")); + expect(response.body).toMatchObject({ + code: "SCHEMA_ERROR", + error: expect.stringContaining("must be one of the following values: stream, generate"), + }); }); it("rejects missing quality field", async ({ expect }) => {