Skip to content

Commit 2228c9e

Browse files
committed
coderabbit fixes
1 parent 7a681c2 commit 2228c9e

File tree

4 files changed

+46
-20
lines changed

4 files changed

+46
-20
lines changed

apps/webapp/app/components/runs/v3/ai/extractAISummarySpanData.ts

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -223,7 +223,6 @@ function parseProviderMetadata(
223223
if (!parsed || typeof parsed !== "object") return undefined;
224224

225225
let serviceTier: string | undefined;
226-
let resolvedProvider: string | undefined;
227226
let responseId: string | undefined;
228227

229228
// OpenAI
@@ -237,8 +236,8 @@ function parseProviderMetadata(
237236
serviceTier = parsed.anthropic.usage.service_tier;
238237
}
239238

240-
return serviceTier || resolvedProvider || responseId
241-
? { serviceTier, resolvedProvider, responseId }
239+
return serviceTier || responseId
240+
? { serviceTier, responseId }
242241
: undefined;
243242
} catch {
244243
return undefined;

apps/webapp/app/routes/api.v1.prompts.$slug.override.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ export async function loader({ request }: LoaderFunctionArgs) {
2828
if (request.method.toUpperCase() === "OPTIONS") {
2929
return apiCors(request, json({}));
3030
}
31-
return new Response(null, { status: 405 });
31+
return apiCors(request, json({ error: "Method not allowed" }, { status: 405 }));
3232
}
3333

3434
export async function action({ request, params }: ActionFunctionArgs) {

apps/webapp/app/routes/resources.orgs.$organizationSlug.projects.$projectParam.env.$envParam.prompts.$promptSlug.generations.ts

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,8 +50,17 @@ export const loader = async ({ request, params }: LoaderFunctionArgs) => {
5050
if (!environment) throw new Response("Environment not found", { status: 404 });
5151

5252
const url = new URL(request.url);
53-
const versions = url.searchParams.getAll("versions").filter(Boolean).map(Number).filter((n) => !isNaN(n));
53+
54+
const versions = url.searchParams
55+
.getAll("versions")
56+
.map(Number)
57+
.filter((n) => Number.isInteger(n) && n > 0);
58+
5459
const period = url.searchParams.get("period") ?? "7d";
60+
if (!/^\d+[mhdw]$/.test(period)) {
61+
return json({ generations: [], pagination: {} } satisfies GenerationsResponse);
62+
}
63+
5564
const fromTime = url.searchParams.get("from");
5665
const toTime = url.searchParams.get("to");
5766
const cursorParam = url.searchParams.get("cursor") ?? undefined;
@@ -60,6 +69,10 @@ export const loader = async ({ request, params }: LoaderFunctionArgs) => {
6069
const startTime = fromTime ? new Date(fromTime) : new Date(Date.now() - periodMs);
6170
const endTime = toTime ? new Date(toTime) : new Date();
6271

72+
if (isNaN(startTime.getTime()) || isNaN(endTime.getTime())) {
73+
return json({ generations: [], pagination: {} } satisfies GenerationsResponse);
74+
}
75+
6376
const models = url.searchParams.getAll("models").filter(Boolean);
6477
const operations = url.searchParams.getAll("operations").filter(Boolean);
6578
const providers = url.searchParams.getAll("providers").filter(Boolean);

apps/webapp/app/v3/services/promptService.server.ts

Lines changed: 29 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -4,23 +4,37 @@ import { BaseService, ServiceValidationError } from "./baseService.server";
44

55
export class PromptService extends BaseService {
66
async promoteVersion(promptId: string, versionId: string, options?: { sourceGuard?: boolean }) {
7-
if (options?.sourceGuard) {
8-
const target = await this._prisma.promptVersion.findUnique({
9-
where: { id: versionId },
10-
});
11-
if (!target) {
12-
throw new ServiceValidationError("Version not found", 404);
13-
}
14-
if (target.source !== "code") {
15-
throw new ServiceValidationError(
16-
"Only code-sourced versions can be promoted. Use the override API instead.",
17-
400
18-
);
19-
}
7+
const target = await this._prisma.promptVersion.findUnique({
8+
where: { id: versionId },
9+
});
10+
11+
if (!target) {
12+
throw new ServiceValidationError("Version not found", 404);
13+
}
14+
15+
if (target.promptId !== promptId) {
16+
throw new ServiceValidationError("Version does not belong to this prompt", 400);
17+
}
18+
19+
if (options?.sourceGuard && target.source !== "code") {
20+
throw new ServiceValidationError(
21+
"Only code-sourced versions can be promoted. Use the override API instead.",
22+
400
23+
);
2024
}
2125

22-
await this.#removeLabel(promptId, "current");
23-
await this.#addLabel(versionId, "current");
26+
await prisma.$transaction(async (tx) => {
27+
await tx.$executeRaw`
28+
UPDATE "prompt_versions"
29+
SET "labels" = array_remove("labels", 'current')
30+
WHERE "promptId" = ${promptId} AND 'current' = ANY("labels")
31+
`;
32+
await tx.$executeRaw`
33+
UPDATE "prompt_versions"
34+
SET "labels" = array_append("labels", 'current')
35+
WHERE "id" = ${versionId} AND NOT ('current' = ANY("labels"))
36+
`;
37+
});
2438
}
2539

2640
async createOverride(

0 commit comments

Comments
 (0)