/**
 * Goal expander — meta-prompting for autonomous task decomposition.
 *
 * Takes a high-level user intent ("Build a wiki from D:\big.pdf",
 * "Research Acme's tech stack", "Set up a daily 9am check-in") and
 * expands it into an ordered list of plan-shaped tasks ready for
 * `cookbook/task-loop.ts` to consume.
 *
 * Design:
 *   - Deterministic heuristic decomposer (no model required) — works
 *     offline and in CI, mirrors the RAG fallback pattern.
 *   - Optional model refiner — when a chat client is provided, the
 *     heuristic skeleton is passed back through the model with a
 *     meta-prompt to refine titles, add anchors, and reorder.
 *   - Pure function over inputs: callers persist the result themselves
 *     (usually via `renderTasksAsPlanMarkdown` + appendFileSync).
 *
 * Intent shapes detected:
 *   - "ingest"   — process a file/folder into a structured artifact
 *                  (PDF → wiki, folder → index, etc). Mostly external/code.
 *   - "research" — investigate something and report. Mostly research kind.
 *   - "build"    — implement a feature or app. Code kind.
 *   - "schedule" — set up a recurring task. Code kind.
 *   - "generic"  — fallback: one external task with the raw intent.
 */
export type TaskKind = "code" | "research" | "external";
export interface PlanTask {
    id: string;
    title: string;
    kind?: TaskKind;
    anchors?: string[];
    target?: string;
}
export type IntentShape = "ingest" | "research" | "build" | "schedule" | "generic";
export interface ExpandGoalOptions {
    /** Already-existing task IDs to avoid collision when slugifying. */
    existingIds?: string[];
    /** Hard cap on task count (default 12). */
    maxTasks?: number;
}
export interface ExpansionResult {
    shape: IntentShape;
    tasks: PlanTask[];
    /** Human-readable rationale for the chosen decomposition. */
    rationale: string;
}
export declare function detectIntent(intent: string): IntentShape;
/**
 * Lower-case, kebab-case, ASCII-only, hard-capped at 60 chars.
 * Suffixed with "-2", "-3" etc. when colliding with `taken`.
 */
export declare function slugify(input: string, taken?: Set<string>): string;
/**
 * Heuristic decomposer — no model required. Emits a sensible skeleton
 * the user can run as-is or refine with the optional model pass.
 */
export declare function expandGoal(intent: string, options?: ExpandGoalOptions): ExpansionResult;
/**
 * Renders a list of plan tasks as Markdown lines compatible with
 * `cookbook/task-loop.ts`'s parser. Always emits a trailing newline.
 *
 * Output format:
 *   - [ ] task-id — Task title
 *     - anchor: path/to/file
 *     - target: path/to/file
 *     - kind: research
 */
export declare function renderTasksAsPlanMarkdown(tasks: PlanTask[]): string;
//# sourceMappingURL=goalExpander.d.ts.map