import { type Static, Type } from "typebox"; export declare const PersonaSchema: Type.TObject<{ name: Type.TString; filePath: Type.TString; identity: Type.TString; body: Type.TString; capabilities: Type.TArray; frontmatter: Type.TRecord<"^.*$", Type.TUnknown>; }>; export type Persona = Static; export declare const SkillSchema: Type.TObject<{ name: Type.TString; filePath: Type.TString; body: Type.TString; capabilities: Type.TArray; frontmatter: Type.TRecord<"^.*$", Type.TUnknown>; }>; export type Skill = Static; export type PersonaSkillLoaderErrorCode = "missing_file" | "invalid_frontmatter" | "path_traversal" | "no_project_root" | "validation_failed"; export declare class PersonaSkillLoaderError extends Error { readonly code: PersonaSkillLoaderErrorCode; constructor(code: PersonaSkillLoaderErrorCode, message: string); } export interface LoaderOptions { /** Override project root (the directory containing `.forge/`). */ projectRoot?: string; /** cwd to start `.forge/config.json` discovery from. Defaults to `process.cwd()`. */ cwd?: string; } /** * Load a Persona record from `/.forge/personas/.md`. * * `name` is the filename stem (e.g. `"engineer"` for `engineer.md`). It must * not contain path separators or traversal segments — invalid names raise * `PersonaSkillLoaderError` with `code: "path_traversal"`. */ export declare function loadPersona(name: string, opts?: LoaderOptions): Persona; /** * Load a Skill record from `/.forge/skills/.md`. * * `name` is the filename stem. The Forge convention names skill files * `-skills.md` (e.g. `engineer-skills.md`); callers pass the full stem * including the `-skills` suffix. The loader does not auto-append it. */ export declare function loadSkill(name: string, opts?: LoaderOptions): Skill;