| import z from 'zod/v4' | |
| // Types extracted to src/types/permissions.ts to break import cycles | |
| import type { | |
| PermissionBehavior, | |
| PermissionRule, | |
| PermissionRuleSource, | |
| PermissionRuleValue, | |
| } from '../../types/permissions.js' | |
| import { lazySchema } from '../lazySchema.js' | |
| // Re-export for backwards compatibility | |
| export type { | |
| PermissionBehavior, | |
| PermissionRule, | |
| PermissionRuleSource, | |
| PermissionRuleValue, | |
| } | |
| /** | |
| * ToolPermissionBehavior is the behavior associated with a permission rule. | |
| * 'allow' means the rule allows the tool to run. | |
| * 'deny' means the rule denies the tool from running. | |
| * 'ask' means the rule forces a prompt to be shown to the user. | |
| */ | |
| export const permissionBehaviorSchema = lazySchema(() => | |
| z.enum(['allow', 'deny', 'ask']), | |
| ) | |
| /** | |
| * PermissionRuleValue is the content of a permission rule. | |
| * @param toolName - The name of the tool this rule applies to | |
| * @param ruleContent - The optional content of the rule. | |
| * Each tool may implement custom handling in `checkPermissions()` | |
| */ | |
| export const permissionRuleValueSchema = lazySchema(() => | |
| z.object({ | |
| toolName: z.string(), | |
| ruleContent: z.string().optional(), | |
| }), | |
| ) | |