import { type ContextLimits } from "./context-limits.js"; export declare const BUNDLED_SKILLS_DIRS: readonly string[]; /** Where Motion mode's skills and HyperFrames launcher live on disk. */ export interface MotionBundle { root: string; skillsDir: string; launcher: string; version: string; } /** * Locate Motion mode's bundle, or null when this install has none. Validates * the manifest so a half-copied bundle reads as absent, not as a broken mode. */ export declare function findMotionBundle(candidates?: readonly string[]): Promise; /** Load only Motion's authored skills; keep their contracts intact and catalog order stable. */ export declare function loadMotionSkills(bundle: MotionBundle): Promise; export interface Skill { name: string; description: string; content: string; source: string; /** Directory used to resolve references linked from the skill content. */ root?: string; } /** * Discover skills from global and project-local skill directories. */ export declare function discoverSkills(options: { globalSkillsDir: string; projectDir?: string; }): Promise; /** * Parse a skill file with optional frontmatter. * Frontmatter values may be quoted or YAML block scalars (`description: >`). */ export declare function parseSkillFile(rawInput: string, source: string): Skill; /** * Render the per-skill catalog lines under byte budgets: each description is * clamped to `skillDescriptionBytes`, then lines are admitted into a shared * `skillCatalogBytes` budget in listed order. Skills dropped by the catalog * budget are named in `dropped` so callers can surface them — a silently * missing skill is indistinguishable from one that does not exist. * * Shared by the prompt's Skills section and the skill tool's description: both * are attacker-bloatable surfaces for the same list. */ export declare function renderSkillLines(skills: Skill[], limits?: ContextLimits): { lines: string[]; dropped: string[]; }; /** * Format skills as a summary list for the system prompt. * Only includes names and descriptions — full content is loaded on-demand via the skill tool. */ export declare function formatSkillsForPrompt(skills: Skill[], limits?: ContextLimits): string;