import type { Logger } from 'pino';
export interface IntentResult {
    agent: string;
    score: number;
    reason: string;
    triggeredBy: 'explicit' | 'sticky' | 'keyword' | 'topic' | 'default' | 'fallback';
}
/**
 * Classify a user message and return the best agent to handle it.
 *
 * `defaultAgent` is the operator-configured fallback (config.defaultAgent).
 * Without it, a generic message like "hello" on a fresh thread used to fall
 * through to the first agent in PROFILES declaration order (opencode),
 * regardless of what the operator picked as default — the web chat surface
 * hit this every time a new conversation was started. We give defaultAgent
 * a small score bias (smaller than topic +2 / keyword +1*weight, larger
 * than base weight) so explicit topic/keyword signal still wins, but
 * ambiguous messages route to the operator's chosen default.
 */
export declare function classifyIntent(text: string, stickyAgent?: string, logger?: Logger, defaultAgent?: string): IntentResult;
//# sourceMappingURL=intent.d.ts.map