import { type RankedEntry, type RankOptions, type TaskRanking } from '../decision/picks.js'; export type PickKind = 'agents' | 'skills' | 'both'; export interface PickRequest { task: string; kind?: PickKind; categories?: string[]; top?: number; root?: string; /** Passed to rankForTask (env, fetchImpl, include, minConfidence, ...). */ options?: RankOptions; } /** A bundled core agent, used only when nothing in the registry ranks. */ export declare const FALLBACK_AGENT = "coder"; export interface AgentSuggestion { /** Spawnable agent name (Task subagent_type). */ type: string; confidence: number; reason: string; } export interface AgentPick { method: 'jev' | 'keyword' | 'fallback'; provider?: string; agents: AgentSuggestion[]; /** The top clears pick's confidence bar (`monomind pick`'s `confident`). */ confident: boolean; /** pickSummary for agents: `agent: ` or `no confident match`. */ summary: string; } export declare function spawnableName(entry: RankedEntry): string; export declare function pickForTask(req: PickRequest): Promise; /** True when a ranked list of `kind` has a top worth acting on (the bar the * prompt hook's [PICK] line uses; see RankedList.confident). */ export declare function pickConfident(ranking: TaskRanking, kind?: PickKind): boolean; /** One line for humans and prompts, `agent: ยท skill: `, naming * only a confident top (as the [PICK] line does); `no confident match` when * neither is. */ export declare function pickSummary(ranking: TaskRanking, kind?: PickKind): string; /** Keyword scores are BM25-style relevance (pick-rank.cjs: IDF-weighted * description matches plus a bonus for name/id words, scaled by the share of * task words matched), typically 0โ€“10; map them onto 0.4โ€“0.9 so a strong * match reads as confident. A decision-model answer keeps its probability. */ export declare function confidenceOf(entry: RankedEntry): number; /** The top keyword-ranked agent when it clears the bar the prompt hook's * [PICK] line uses (pick-rank.cjs KEYWORD_GATE: a minimum score and a lead * over the runner-up), else null. Ties and weak overlap are no decision. */ export declare function keywordLeader(ranked: RankedEntry[]): RankedEntry | null; /** Ranked agents in the `{type, confidence, reason}` shape the routing hooks * return; never empty โ€” `FALLBACK_AGENT` when nothing ranks. */ export declare function pickAgents(task: string, top?: number, root?: string): Promise; //# sourceMappingURL=agent-pick.d.ts.map