export interface CatalogItem { id: string; name?: string; category?: string; description?: string; text?: string; invoke?: string; /** Skill pool: `platform` (.claude/skills) or `org` (the Org skill library). */ source?: 'platform' | 'org'; /** Agent definition origin: the project, the user's ~/.claude/agents, or an extra root. */ origin?: 'project' | 'user' | 'extra'; /** `low`: an admin/meta skill (`pick: low` frontmatter) that keyword * ranking places below equally matching entries. */ pick?: 'low'; } export type GateKind = 'agents' | 'skills'; export interface GateEntry { score?: number; baseScore?: number; } export interface RankedOption { id: string; probability: number; } export interface JevAnswer { choice: string; confidence: number; ranked: RankedOption[]; } export interface JevPick { provider: 'custom' | 'typesafe'; agent?: JevAnswer; skill?: JevAnswer; } export interface JevProvider { name: 'custom' | 'typesafe'; baseUrl: string; apiKey?: string; model: string; } export interface JevError extends Error { provider: string; status?: number; } export interface PickOptions { env?: NodeJS.ProcessEnv; fetchImpl?: typeof fetch; onError?: (err: JevError) => void; /** Overrides MONOMIND_JEV_TIMEOUT_MS for this call. */ timeoutMs?: number; maxCandidates?: number; include?: { agents?: string[]; skills?: string[]; }; agentInstructions?: string; skillInstructions?: string; } export interface JevPickerModule { NONE_ID: string; isDisabled(env?: NodeJS.ProcessEnv): boolean; normalizeBaseUrl(value?: string): string | null; resolveProviders(env?: NodeJS.ProcessEnv): JevProvider[]; resolveTimeoutMs(env?: NodeJS.ProcessEnv): number; resolveHookTimeoutMs(env?: NodeJS.ProcessEnv): number; resolveMinConfidence(env?: NodeJS.ProcessEnv): number; resolvePickMinConfidence(env?: NodeJS.ProcessEnv): number; redactSecrets(text: string): string; shortlist(query: string, items: T[], limit: number, include?: string[]): (T & { score: number; })[]; /** `text` minus exclusion cues and the words they rule out (pick-rank.cjs). */ withoutExclusions?(text: string): string; /** The keyword pick bar the prompt hook uses (pick-rank.cjs). */ KEYWORD_GATE?: Record; leads?(list: T[], min: number, ratio: number): T | null; pick(task: string, catalogs: { agents?: CatalogItem[]; skills?: CatalogItem[]; }, opts?: PickOptions): Promise; acceptAgent(answer: JevAnswer | undefined, env?: NodeJS.ProcessEnv, minConfidence?: number): string | null; acceptSkills(answer: JevAnswer | undefined, env?: NodeJS.ProcessEnv, max?: number, minConfidence?: number): string[]; probe(provider: JevProvider, opts?: { env?: NodeJS.ProcessEnv; fetchImpl?: typeof fetch; }): Promise; /** opts.registry: an in-memory agent registry used instead of .monomind/registry.json. */ loadAgentCatalog(root: string, opts?: { registry?: unknown; }): CatalogItem[]; loadSkillCatalog(root: string, opts?: { index?: unknown; registry?: unknown; }): CatalogItem[]; } export declare function jevModule(): JevPickerModule | null; /** Why the helper exists but failed to load; undefined when it is just missing. */ export declare function jevLoadError(): Error | undefined; export declare function decisionModelConfigured(env?: NodeJS.ProcessEnv): boolean; export declare function pickWithJev(task: string, catalogs: { agents?: CatalogItem[]; skills?: CatalogItem[]; }, opts?: PickOptions): Promise; /** The floor automatic decisions (hook injection, org auto-assign) act above * (MONOMIND_JEV_MIN_CONFIDENCE, default 0.6). */ export declare function automaticMinConfidence(env?: NodeJS.ProcessEnv): number; /** The floor for rankings a person reads (MONOMIND_JEV_PICK_MIN_CONFIDENCE, * default 0.25); between it and the automatic floor an answer is low-confidence. */ export declare function pickMinConfidence(env?: NodeJS.ProcessEnv): number; /** `minConfidence` overrides the automatic floor for this call. */ export declare function acceptAgent(answer: JevAnswer | undefined, env?: NodeJS.ProcessEnv, minConfidence?: number): string | null; export declare function acceptSkills(answer: JevAnswer | undefined, env?: NodeJS.ProcessEnv, max?: number, minConfidence?: number): string[]; /** True for a Jev "none of these fits" answer at or above `minConfidence`. */ export declare function noneFits(answer: JevAnswer | undefined, minConfidence: number): boolean; /** The top of a keyword-ranked list when it clears the bar the prompt hook's * [PICK] line uses (pick-rank.cjs KEYWORD_GATE + leads), else null. */ export declare function keywordGateLeader(ranked: T[], kind: GateKind): T | null; /** Keyword ranking (the no-model fallback): only items with some overlap. */ export declare function keywordRank(query: string, items: T[], limit: number): (T & { score: number; })[]; //# sourceMappingURL=jev.d.ts.map