/** * Persona Schema — Foundation for AI agent personas * * This module provides the basic schema for persona definitions. * Personas are explicit, noun-y, human-initiated operational modes for AI agents. * * Lex provides the foundation; LexRunner builds production personas on top. * * @module */ import { z } from "zod"; /** * Role definition within a persona */ export declare const PersonaRoleSchema: z.ZodObject<{ title: z.ZodString; scope: z.ZodString; repo: z.ZodOptional; }, z.core.$strip>; /** * Duties (invariants) for a persona */ export declare const PersonaDutiesSchema: z.ZodObject<{ must_do: z.ZodArray; must_not_do: z.ZodArray; }, z.core.$strip>; /** * Complete persona definition schema * * Personas use YAML frontmatter in Markdown files: * ```yaml * --- * name: Senior Dev * version: 1.0.0 * triggers: ["ok senior dev", "senior dev mode"] * ... * --- * # Senior Dev Persona * [Markdown body with detailed guidance] * ``` */ export declare const PersonaSchema: z.ZodObject<{ name: z.ZodString; version: z.ZodDefault; triggers: z.ZodArray; role: z.ZodObject<{ title: z.ZodString; scope: z.ZodString; repo: z.ZodOptional; }, z.core.$strip>; ritual: z.ZodOptional; duties: z.ZodObject<{ must_do: z.ZodArray; must_not_do: z.ZodArray; }, z.core.$strip>; gates: z.ZodOptional>; }, z.core.$strip>; /** * Type for a validated persona */ export type Persona = z.infer; /** * Type for persona role */ export type PersonaRole = z.infer; /** * Type for persona duties */ export type PersonaDuties = z.infer; /** * Parse and validate persona data * * @param data - Raw persona data (typically from YAML frontmatter) * @returns Validated Persona object * @throws ZodError if validation fails * * @example * ```typescript * import { parsePersona } from './persona.js'; * import yaml from 'js-yaml'; * * const frontmatter = yaml.load(yamlString); * const persona = parsePersona(frontmatter); * console.log(persona.name); // "Senior Dev" * ``` */ export declare function parsePersona(data: unknown): Persona; /** * Validate persona data without throwing * * @param data - Raw persona data * @returns Result object with success flag and data/error * * @example * ```typescript * const result = validatePersona(data); * if (result.success) { * console.log(result.data.name); * } else { * console.error(result.error); * } * ``` */ export declare function validatePersona(data: unknown): z.ZodSafeParseResult<{ name: string; version: string; triggers: string[]; role: { title: string; scope: string; repo?: string | undefined; }; duties: { must_do: string[]; must_not_do: string[]; }; ritual?: string | undefined; gates?: string[] | undefined; }>;