/**
 * Current-code invariants asserted (2026-04-21, ses_006 Phase 4):
 *
 *   - `DefaultRetriever.retrieve(query, scope, kbId)` dispatches by
 *     `effectiveConfig.mode` (query.config overrides instance config).
 *   - Query expansion: if `recentMessages` is present and non-empty,
 *     appends the last 3 messages joined with spaces after a
 *     `\n\nContext: ` marker. Otherwise passes `query.text` verbatim.
 *   - `vector` mode: embeds the (expanded) query once, forwards
 *     `{embedding, topK, tenantId, knowledgeBaseId, minScore}` to the
 *     store, returns store results unchanged.
 *   - `keyword` mode: fetches `topK * 2` results from vector search with
 *     `minScore: 0`, then rescores via BM25 against the query's
 *     tokenized form. Filters score > 0, sorts desc, slices to topK.
 *     Tokenization: lowercase, strip non-`\w\s`, split by whitespace,
 *     drop tokens length ≤ 1.
 *   - `hybrid` mode: runs vector + keyword in parallel, merges by
 *     `chunk.id`, weights vector by `alpha` and keyword by `1 - alpha`
 *     (default alpha = 0.7). Sorts desc, slices to topK.
 *   - Result shape: `{chunks, query, expandedQuery?, mode, durationMs}`.
 *     `expandedQuery` is omitted when equal to original `query.text`.
 *   - Unknown mode would hit the exhaustive throw (unreachable via
 *     types; not asserted).
 */
export {};
//# sourceMappingURL=retriever.test.d.ts.map