ai-chatbot/lib/agents/psd-render-task-contract.ts
2026-04-24 17:28:55 +08:00

35 lines
1.1 KiB
TypeScript

import { z } from "zod";
export const AGENT_PSD_RENDER_TASK_POLL_AFTER_MS = 1500;
const textPositionOffsetSchema = z.object({
offsetX: z.number().min(-5000).max(5000).optional(),
offsetY: z.number().min(-5000).max(5000).optional(),
});
export const agentPsdTemplateRenderRequestSchema = z.object({
templateId: z.string().trim().min(1),
sourceImageUrl: z.string().trim().optional().nullable(),
hiddenLayerIds: z.array(z.string().trim().min(1)).default([]),
imageAssignments: z.record(z.string(), z.string()).default({}),
imagePlacements: z
.record(
z.string(),
z.object({
scale: z.number().positive().max(8).optional(),
offsetX: z.number().optional(),
offsetY: z.number().optional(),
})
)
.default({}),
textAssignments: z.record(z.string(), z.string()).default({}),
textColorAssignments: z.record(z.string(), z.string()).default({}),
textPositionOffsets: z
.record(z.string(), textPositionOffsetSchema)
.default({}),
});
export type AgentPsdTemplateRenderRequest = z.infer<
typeof agentPsdTemplateRenderRequestSchema
>;