import type { PromptMessages } from "../prompts/direct-conversion.ts"; export type SkillPhase = "blueprint" | "todo" | "coding" | "audit" | "repair"; export interface SkillSelectionInput { phase: SkillPhase; languages: readonly string[]; /** Whether the model owns one marker replacement or a complete file. */ mode?: "inline" | "file"; /** Parser-derived grammar positions; never inferred from human prose. */ insertionContexts?: readonly string[]; targetPaths?: readonly string[]; instructions?: readonly string[]; /** Bounded project/contract evidence used only for deterministic matching. */ evidence?: readonly string[]; } export interface ModelSkill { /** Exact direct-child directory name under `src/skills` or `dist/skills`. */ id: string; /** Concatenated markdown, with SKILL.md first and sibling .md files sorted. */ guidance: string; } /** * Read only real direct-child directories and real markdown files. Symlinks are * ignored so a packaged skill cannot escape its bounded, reviewed directory. */ export declare function discoverModelSkills(root?: string): Promise; /** Pure routing seam: useful for tests and for callers that preload skill markdown. */ export declare function selectModelSkills(skills: readonly ModelSkill[], input: SkillSelectionInput): ModelSkill[]; export declare function loadSelectedModelSkills(input: SkillSelectionInput): Promise; /** * Inject trusted package guidance after deterministic selection. This runs for * every model phase, but returns the original prompt unchanged when no folder * name matches—non-web work pays no skill-context cost. */ export declare function attachModelSkills(prompt: PromptMessages, skills: readonly ModelSkill[]): PromptMessages; //# sourceMappingURL=index.d.ts.map