import type { EmbedFn } from './ReplayEvaluator.ts'; import { MemberOrchestrator } from '../reasoning/MemberOrchestrator.ts'; import type { JSONSchema } from '../llm/types.ts'; /** A labelled set of queries that should (or should not) activate one member. */ export interface TriggerQuerySet { member: string; shouldTrigger: string[]; shouldNotTrigger: string[]; } /** Maps a query to the member the router would activate (null = none). */ export type Predictor = (query: string) => string | null | Promise; export interface TriggerMetrics { truePositive: number; falsePositive: number; falseNegative: number; trueNegative: number; precision: number; recall: number; accuracy: number; f1: number; } export interface SplitSets { train: TriggerQuerySet; validation: TriggerQuerySet; } export declare const TRIGGER_QUERY_SET_SCHEMA: JSONSchema; export declare function validateTriggerQuerySet(data: unknown): void; /** Deterministic activation surface: the runtime's keyword/file/stage router. */ export declare function keywordPredictor(orchestrator?: MemberOrchestrator): Predictor; /** * Semantic activation surface: embeds each member description once (lazily, * cached) and returns the closest above `minScore`, else null. Approximates how * a provider-side loader picks a skill from its SKILL.md description. */ export declare function semanticPredictor(descriptions: ReadonlyArray<{ name: string; description: string; }>, embed: EmbedFn, minScore?: number): Predictor; /** Confusion matrix + derived rates for a set scored by one predictor. */ export declare function scoreTriggers(set: TriggerQuerySet, predict: Predictor): Promise; /** * Deterministic train/validation split (train first, ceil ratio). Splits both * buckets so either side can be scored standalone; used to guard against * over-fitting a description to the queries used to tune it. */ export declare function splitTriggers(set: TriggerQuerySet, trainRatio?: number): SplitSets; /** Actionable hints derived from the rates (empty when both meet target). */ export declare function triggerRecommendations(metrics: TriggerMetrics, label?: string): string[]; //# sourceMappingURL=trigger.d.ts.map