/** * settings domain zod schemas (names derived from map keys: settingsDescribeRequestSchema / * settingsDescribeValueSchema / settingsUpdate* / settingsReplace*). */ import { z } from 'zod' import type { RequestPayload, ResponseValue } from './rpc-map.ts' import type { Wire } from './rpc.schema.ts' import type { SettingsNamespaceView, SettingsPathOpView, SettingsSecretView } from './settings.ts' /** One redacted secret slot. */ export const settingsSecretViewSchema = z.object({ path: z.array(z.string()), set: z.boolean(), }) satisfies z.ZodType> /** SettingsNamespaceView row of settings.describe and the write responses. */ export const settingsNamespaceViewSchema = z.object({ ns: z.string().min(1), schema: z.unknown(), value: z.unknown(), base: z.unknown().optional(), user: z.unknown().optional(), applies: z.union([z.literal('live'), z.literal('restart')]), secrets: z.array(settingsSecretViewSchema), revision: z.number(), }) satisfies z.ZodType> /** settings.describe request payload. */ export const settingsDescribeRequestSchema = z.object({}) satisfies z.ZodType>> /** settings.describe response value. */ export const settingsDescribeValueSchema = z.object({ writable: z.boolean(), hasDocument: z.boolean(), namespaces: z.array(settingsNamespaceViewSchema), }) satisfies z.ZodType>> /** settings.openDocument request payload. */ export const settingsOpenDocumentRequestSchema = z.object({}) satisfies z.ZodType>> /** settings.openDocument response value. */ export const settingsOpenDocumentValueSchema = z.object({ opened: z.literal(true), }) satisfies z.ZodType>> /** settings.update request payload. */ export const settingsUpdateRequestSchema = z.object({ ns: z.string().min(1), patch: z.record(z.string(), z.unknown()), expectedRevision: z.number().optional(), }) satisfies z.ZodType>> /** settings.update response value: the namespace's new redacted view. */ export const settingsUpdateValueSchema = settingsNamespaceViewSchema satisfies z.ZodType>> /** settings.replace request payload. */ export const settingsReplaceRequestSchema = z.object({ ns: z.string().min(1), section: z.record(z.string(), z.unknown()), expectedRevision: z.number().optional(), }) satisfies z.ZodType>> /** One path-addressed edit of settings.mutate. */ export const settingsPathOpSchema = z.discriminatedUnion('op', [ z.object({ op: z.literal('set'), path: z.array(z.string()), value: z.unknown() }), z.object({ op: z.literal('unset'), path: z.array(z.string()) }), ]) as unknown as z.ZodType> /** settings.mutate request payload. */ export const settingsMutateRequestSchema = z.object({ ns: z.string().min(1), ops: z.array(settingsPathOpSchema), expectedRevision: z.number().optional(), }) satisfies z.ZodType>> /** settings.mutate response value: the namespace's new redacted view. */ export const settingsMutateValueSchema = settingsNamespaceViewSchema satisfies z.ZodType>> /** settings.replace response value. */ export const settingsReplaceValueSchema = settingsNamespaceViewSchema satisfies z.ZodType>>