Something went wrong. Try again.
source dump of claude code forked from oppi.li/claude-code
Something went wrong. Try again.
2.4 kB · 78 lines
TypeScript
at main
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879/** * Zod schemas for permission updates. * * This file is intentionally kept minimal with no complex dependencies * so it can be safely imported by src/types/hooks.ts without creating * circular dependencies. */import z from 'zod/v4'// Types extracted to src/types/permissions.ts to break import cyclesimport type { PermissionUpdate, PermissionUpdateDestination,} from '../../types/permissions.js'import { lazySchema } from '../lazySchema.js'import { externalPermissionModeSchema } from './PermissionMode.js'import { permissionBehaviorSchema, permissionRuleValueSchema,} from './PermissionRule.js'
// Re-export for backwards compatibilityexport type { PermissionUpdate, PermissionUpdateDestination }
/** * PermissionUpdateDestination is where a new permission rule should be saved to. */export const permissionUpdateDestinationSchema = lazySchema(() => z.enum([ // User settings (global) 'userSettings', // Project settings (shared per-directory) 'projectSettings', // Local settings (gitignored) 'localSettings', // In-memory for the current session only 'session', // From the command line arguments 'cliArg', ]),)
export const permissionUpdateSchema = lazySchema(() => z.discriminatedUnion('type', [ z.object({ type: z.literal('addRules'), rules: z.array(permissionRuleValueSchema()), behavior: permissionBehaviorSchema(), destination: permissionUpdateDestinationSchema(), }), z.object({ type: z.literal('replaceRules'), rules: z.array(permissionRuleValueSchema()), behavior: permissionBehaviorSchema(), destination: permissionUpdateDestinationSchema(), }), z.object({ type: z.literal('removeRules'), rules: z.array(permissionRuleValueSchema()), behavior: permissionBehaviorSchema(), destination: permissionUpdateDestinationSchema(), }), z.object({ type: z.literal('setMode'), mode: externalPermissionModeSchema(), destination: permissionUpdateDestinationSchema(), }), z.object({ type: z.literal('addDirectories'), directories: z.array(z.string()), destination: permissionUpdateDestinationSchema(), }), z.object({ type: z.literal('removeDirectories'), directories: z.array(z.string()), destination: permissionUpdateDestinationSchema(), }), ]),)