/** * Candidate Extraction Module * * Extract candidate messages likely to contain activities using: * - Heuristics (regex + URL patterns) - fast, free * - Embeddings (semantic search) - slower, requires OpenAI API * * Includes agreement deduplication to avoid classifying both suggestions * and their responses as separate activities. */ import type { ResponseCache } from '../caching/types'; import type { EmbeddingConfig, ExtractorOptions, ExtractorResult, ParsedMessage, Result, SemanticSearchConfig } from '../types'; export { deduplicateAgreements } from './context-window'; export { ACTIVITY_TYPE_QUERIES, AGREEMENT_QUERIES, cosineSimilarity, DEFAULT_ACTIVITY_QUERIES, embedQueries, extractCandidatesByEmbeddings, findSemanticCandidates, findTopK, getAllQueryEmbeddings, getDefaultQueryEmbeddings, getQueryEmbedding, getQueryEmbeddingsDimensions, getQueryEmbeddingsModel, getQueryType, loadQueryEmbeddings, SUGGESTION_QUERIES } from './embeddings/index'; export { ACTIVITY_KEYWORDS, ACTIVITY_PATTERNS, type ActivityLinkOptions, classifyUrl, EXCLUSION_PATTERNS, extractActivityLinks, extractCandidatesByHeuristics, extractGoogleMapsCoords, isActivityUrl, isSocialUrl } from './heuristics/index'; export interface ExtractCandidatesConfig { heuristics?: ExtractorOptions; embeddings?: { config: EmbeddingConfig; search?: SemanticSearchConfig; }; cache?: ResponseCache; } export interface ExtractCandidatesResult extends ExtractorResult { embeddingsMatches: number; /** Number of agreement candidates removed due to overlap with suggestions. */ agreementsRemoved: number; } /** * Extract candidates using both heuristics and embeddings. * * When embeddings config is provided and OPENAI_API_KEY is available, * runs both extraction methods and merges results by messageId. * Falls back to heuristics-only when embeddings unavailable. * * Applies agreement deduplication to remove agreement candidates that * fall within suggestion context windows. */ export declare function extractCandidates(messages: readonly ParsedMessage[], config?: ExtractCandidatesConfig): Promise>; //# sourceMappingURL=index.d.ts.map