import { z } from "zod"; import { SECRET_PROVIDERS } from "../constants.js"; export const envBindingPlainSchema = z.object({ type: z.literal("plain"), value: z.string(), }); export const envBindingSecretRefSchema = z.object({ type: z.literal("secret_ref"), secretId: z.string().uuid(), version: z.union([z.literal("latest"), z.number().int().positive()]).optional(), }); // Backward-compatible union that accepts legacy inline values. export const envBindingSchema = z.union([ z.string(), envBindingPlainSchema, envBindingSecretRefSchema, ]); export const envConfigSchema = z.record(envBindingSchema); export const createSecretSchema = z.object({ name: z.string().min(1), provider: z.enum(SECRET_PROVIDERS).optional(), value: z.string().min(1), description: z.string().optional().nullable(), externalRef: z.string().optional().nullable(), }); export type CreateSecret = z.infer; export const rotateSecretSchema = z.object({ value: z.string().min(1), externalRef: z.string().optional().nullable(), }); export type RotateSecret = z.infer; export const updateSecretSchema = z.object({ name: z.string().min(1).optional(), description: z.string().optional().nullable(), externalRef: z.string().optional().nullable(), }); export type UpdateSecret = z.infer;