import { type GenerateSkillRequest as BaseGenerateSkillRequest, type GenerateSkillResult as BaseGenerateSkillResult } from "../eval-server/skill-create-routes.js"; export interface GenerateSkillRequest extends BaseGenerateSkillRequest { multiFile?: boolean; } export interface GenerateSkillResult extends BaseGenerateSkillResult { /** Auxiliary files produced by the multi-file pipeline (relative path → contents). */ files?: Record; /** Env-var names declared by the test-agent. */ secrets?: string[]; /** Runtime requirements declared by the script-agent. */ runtime?: { python?: string; pip?: string[]; node?: string; }; /** Integration-test contract declared by the test-agent. */ integrationTests?: { runner: "vitest" | "pytest" | "none"; file?: string; requires?: string[]; }; /** Per-agent error messages from the parallel fan-out (informational). */ multiFileWarnings?: string[]; } export interface GenerateSkillProgressEvent { phase: "preparing" | "generating-body" | "generating-evals" | "generating-scripts" | "generating-graders" | "generating-tests" | "generating-references" | "parsing" | "done"; message: string; } export interface GenerateSkillOptions { /** Project root — used by detectProjectLayout() for plugin hints. */ root: string; /** Optional progress callback — phase events for SSE or CLI spinners. */ onProgress?: (event: GenerateSkillProgressEvent) => void; /** * Optional AbortSignal. When aborted the generator stops as soon as the * in-flight LLM calls settle (LLM clients themselves do not currently * honor AbortSignal; this is best-effort cooperative cancellation). */ abortSignal?: AbortSignal; } /** * Generate a complete skill definition (body + metadata + evals) from a * natural-language prompt. * * Both LLM calls run in parallel (body + evals); the body is required while * evals are optional — if eval generation fails the result is returned with * `evals: []` and a `warning` field. */ export declare function generateSkill(request: GenerateSkillRequest, options: GenerateSkillOptions): Promise;