feat: add admin accounts and image templates
This commit is contained in:
@@ -2,9 +2,8 @@ import { createHash } from "node:crypto";
|
||||
import { assemblePrompt, type PromptAssemblyInput, type PromptMaterial } from "@/lib/prompt/assembler";
|
||||
import { findGenerationJobByIdempotency } from "@/lib/server/data-store";
|
||||
import { submitImageJob, type SubmitImageJobInput } from "@/lib/server/generation-service";
|
||||
import { DEFAULT_OWNER_ID } from "@/lib/server/runtime";
|
||||
import { submitVideoJob, type SubmitVideoJobInput } from "@/lib/server/video-generation-service";
|
||||
import type { PublicApiClient } from "@/lib/server/public-api-auth";
|
||||
import { publicApiOwnerId, type PublicApiClient } from "@/lib/server/public-api-auth";
|
||||
import type { EnabledImageCapability, GenerationCapability, GenerationJob } from "@/lib/types";
|
||||
|
||||
export class PublicApiConflictError extends Error {
|
||||
@@ -46,10 +45,11 @@ export async function createPublicGenerationJob(input: {
|
||||
origin: string;
|
||||
}): Promise<{ job: GenerationJob; reused: boolean }> {
|
||||
const capability = input.body.capability || "image.generate";
|
||||
const ownerId = publicApiOwnerId(input.client);
|
||||
const idempotencyKey = input.request.headers.get("idempotency-key") || input.body.idempotencyKey;
|
||||
const fingerprint = idempotencyKey ? fingerprintBody(input.body) : undefined;
|
||||
if (idempotencyKey && fingerprint) {
|
||||
const existing = await findGenerationJobByIdempotency(input.client.id, idempotencyKey);
|
||||
const existing = await findGenerationJobByIdempotency(input.client.id, idempotencyKey, ownerId);
|
||||
if (existing) {
|
||||
if (existing.idempotencyFingerprint !== fingerprint) {
|
||||
throw new PublicApiConflictError("Idempotency key was already used with a different request body.");
|
||||
@@ -59,7 +59,7 @@ export async function createPublicGenerationJob(input: {
|
||||
}
|
||||
|
||||
const common = {
|
||||
ownerId: DEFAULT_OWNER_ID,
|
||||
ownerId,
|
||||
externalClientId: input.client.id,
|
||||
idempotencyKey,
|
||||
idempotencyFingerprint: fingerprint,
|
||||
|
||||
Reference in New Issue
Block a user