export interface RunnerTask { name: string; doc?: string; /** Parameter names only; used for the `name foo bar` signature line in the description. */ parameters: string[]; /** Override for this specific task, e.g. `cargo run --package crate --bin`. */ commandPrefix?: string; /** Token passed to the runner command; defaults to `name`. Used when display names are namespaced. */ commandName?: string; /** Working directory for the task, relative to the session cwd; absent means the runner's root cwd. */ cwd?: string; } export interface DetectedRunner { id: string; label: string; /** Resolved shell prefix, e.g. "just" or "bun run" or "make". */ commandPrefix: string; tasks: RunnerTask[]; } export interface TaskRunner { id: string; label: string; /** * Probe `cwd` for the manifest, the binary, and the task list. * Returns null when this runner does not apply. */ detect(cwd: string): Promise; } interface PromptTaskModel { name: string; paramSig?: string; command?: string; doc?: string; cwd?: string; } interface PromptRunnerModel { id: string; label: string; commandPrefix: string; tasks: PromptTaskModel[]; hiddenTaskCount?: number; } export interface RecipePromptModel { [key: string]: unknown; hasMultipleRunners: boolean; ambiguityExampleRunner?: string; ambiguityExampleTask?: string; runners: PromptRunnerModel[]; } export interface ResolvedTask { command: string; cwd?: string; } export declare function resolveCommand(op: string, runners: DetectedRunner[]): ResolvedTask; export declare function resolveTaskFromOp(op: string | undefined, runners: DetectedRunner[]): ResolvedTask | undefined; export declare function commandFromOp(op: string | undefined, runners: DetectedRunner[]): string | undefined; export declare function cwdFromOp(op: string | undefined, runners: DetectedRunner[]): string | undefined; export declare function titleFromOp(op: string | undefined, runners: DetectedRunner[]): string; export declare function buildPromptModel(runners: DetectedRunner[]): RecipePromptModel; export {};