UNPKG

autosnippet

Version:

Extract code patterns into a knowledge base for AI coding assistants

69 lines (68 loc) 2.85 kB
/** * IntentExtractor — Intake Layer * * Pure functions: extract intent signals from user query + active file. * Builds multi-query set, infers language/module/scenario for search routing. * * @module service/task/IntentExtractor */ export type SearchScenario = 'lint' | 'generate' | 'search' | 'learning'; export interface ExtractedIntent { /** Multi-query set: Q1 raw + Q2 tech terms + Q3 file context */ queries: string[]; /** Cross-language synonym queries (run in keyword mode to bypass semantic normalization) */ keywordQueries: string[]; /** Inferred language from activeFile or args */ language: string | null; /** Inferred module path from activeFile */ module: string | null; /** Search scenario for MultiSignalRanker routing */ scenario: SearchScenario; /** Original inputs */ raw: { userQuery: string; activeFile?: string; language?: string; }; } export interface TechTermOptions { /** Project-specific class prefixes, e.g. ['BD', 'BBA', 'KS'] */ projectPrefixes?: string[]; /** Language/platform common prefixes, e.g. ObjC: ['UI', 'NS', 'CA', 'AV'] */ platformPrefixes?: string[]; } /** * Extract intent signals from user query and active file. * Pure function — no side effects, no DI. */ export declare function extract(userQuery: string, activeFile?: string, language?: string, termOpts?: TechTermOptions): ExtractedIntent; /** * Build multi-query set from user query + active file. * Q1: raw query, Q2: extracted tech terms, Q3: file context, Q4: synonym focus. * Q1 is enriched with cross-language synonyms to bridge EN↔CJK matching. * Q4 (long queries only): synonym expansion as a separate focused query * to prevent BM25 dilution in verbose natural language inputs. */ export declare function buildQueries(userQuery: string, activeFile?: string, termOpts?: TechTermOptions): string[]; /** * Build keyword-mode queries for cross-language synonym matching. * Uses keyword mode to preserve raw FWS scores without CoarseRanker semantic normalization. */ export declare function buildKeywordQueries(userQuery: string): string[]; /** * Extract tech terms from query using universal patterns + dynamic project prefixes. */ export declare function extractTechTerms(query: string, opts?: TechTermOptions): string[]; /** * Infer file context string from file path for search augmentation. * Returns module path + class name, e.g. "Services/Network BDNetworkManager" */ export declare function inferFileContext(filePath: string): string | null; /** * Infer language from file extension. */ export declare function inferLanguage(filePath: string): string | null; /** * Classify search scenario from user query (lightweight rule-based). */ export declare function classifyScenario(userQuery: string): SearchScenario;