ai-chatbot/lib/agents/psd-render-task-contract.ts
Your Name 4db458a69a
Some checks failed
Lint / build (20) (push) Has been cancelled
Playwright Tests / test (push) Has been cancelled
feat: improve psd template layer editing
2026-05-12 14:44:29 +08:00

39 lines
1.2 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([]),
layerOrderIds: 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({}),
layerPositionOffsets: z
.record(z.string(), textPositionOffsetSchema)
.default({}),
textPositionOffsets: z
.record(z.string(), textPositionOffsetSchema)
.default({}),
});
export type AgentPsdTemplateRenderRequest = z.infer<
typeof agentPsdTemplateRenderRequestSchema
>;