/** * Local model picker — discovery over hardcodes (founder 2026-06-10: * "why are we hardcoding 1 qwen model, don't we have a large variety?"). * * Instead of pinning one Ollama tag, enumerate what is actually installed * (/api/tags), keep models whose template supports tools (/api/show * capabilities), rank by modernity + size, and BEHAVIORALLY verify the top * candidate with one tiny forced tool call. The capability flag alone is a * liar: qwen2.5-coder:7b reports `tools` in capabilities yet emits the call * JSON as plain text (proven 2026-06-10 — the tend_garden stall / the * zero-objects benchmark cells). Only a model that actually returns * `tool_calls` passes. * * Pull a better model tomorrow → it gets picked automatically. Env override * (HOLO_LLM_MODEL / BRITTNEY_MODEL, surfaced via opts.override) always wins * and skips discovery entirely. */ /** * Canonical default endpoint for the LOCAL Ollama tier. Single source for the * one allowed localhost literal (founder-ruled 2026-06-10): the local tier is * only reachable after OLLAMA_* env explicitly selected it in auto-detect, or * via explicit provider=ollama — production sovereign surfaces (fleet, cloud) * always rank above it. Ollama's own server binds this address by default. */ export declare const OLLAMA_DEFAULT_BASE_URL = "http://localhost:11434"; export { SAFE_LOCAL_FALLBACK, MODEL_BLACKLIST, isBlacklistedModel } from './model-policy'; export interface LocalModelChoice { model: string; /** How the choice was made — env pin, verified discovery, or static fallback. */ source: 'override' | 'discovery' | 'fallback'; /** True when the model passed the live tool-call probe (always true for discovery). */ toolCallVerified: boolean; /** Every installed model considered, in ranked order (diagnostics). */ candidates: string[]; } export declare function pickLocalModel(baseURL: string, opts?: { override?: string; fallback?: string; /** Skip candidates above this parameter count (default 15B — keeps a * surprise 70B pull from silently making every turn minutes long). */ maxParamsB?: number; timeoutMs?: number; }): Promise; /** Test hook: clear the per-process picker cache. */ export declare function __clearLocalModelPickerCache(): void;