diff --git a/__tests__/search.test.ts b/__tests__/search.test.ts index 25b7c26..e8e1bc3 100644 --- a/__tests__/search.test.ts +++ b/__tests__/search.test.ts @@ -1,7 +1,7 @@ /** * Search Query Utilities Tests * - * Tests multi-signal scoring, kind bonuses, path relevance, and API intent detection. + * Tests multi-signal scoring, kind bonuses, and path relevance. */ import { describe, it, expect } from 'vitest'; @@ -9,8 +9,6 @@ import { extractSearchTerms, scorePathRelevance, kindBonus, - detectApiIntent, - inferRouteDirectories, STOP_WORDS, } from '../src/search/query-utils'; @@ -114,83 +112,6 @@ describe('Search Query Utilities', () => { }); }); - describe('detectApiIntent', () => { - it('should detect API-related queries', () => { - expect(detectApiIntent('find the API endpoint for users')).toBe(true); - expect(detectApiIntent('where is the login route')).toBe(true); - expect(detectApiIntent('show me the request handler')).toBe(true); - }); - - it('should detect HTTP method patterns', () => { - expect(detectApiIntent('GET /api/users')).toBe(true); - expect(detectApiIntent('post /users/create')).toBe(true); - }); - - it('should detect REST and GraphQL', () => { - expect(detectApiIntent('REST API for payments')).toBe(true); - expect(detectApiIntent('GraphQL resolver for orders')).toBe(true); - }); - - it('should not detect non-API queries', () => { - expect(detectApiIntent('fix the login bug')).toBe(false); - expect(detectApiIntent('add dark mode support')).toBe(false); - }); - - it('should detect controller and middleware mentions', () => { - expect(detectApiIntent('find the auth controller')).toBe(true); - expect(detectApiIntent('CORS middleware configuration')).toBe(true); - }); - }); - - describe('inferRouteDirectories', () => { - it('should detect route directories', () => { - const files = [ - 'src/routes/auth.ts', - 'src/routes/users.ts', - 'src/utils/format.ts', - ]; - const dirs = inferRouteDirectories(files); - expect(dirs).toBeDefined(); - if (dirs) { - expect(dirs.some(d => d.includes('route'))).toBe(true); - } - }); - - it('should detect controller directories', () => { - const files = [ - 'src/controllers/AuthController.ts', - 'src/models/User.ts', - ]; - const dirs = inferRouteDirectories(files); - expect(dirs).toBeDefined(); - if (dirs) { - expect(dirs.some(d => d.includes('controller'))).toBe(true); - } - }); - - it('should detect api directories', () => { - const files = [ - 'src/api/v1/users.ts', - 'src/api/v1/orders.ts', - ]; - const dirs = inferRouteDirectories(files); - expect(dirs).toBeDefined(); - if (dirs) { - expect(dirs.some(d => d.includes('api'))).toBe(true); - } - }); - - it('should return undefined when no route dirs found', () => { - const files = [ - 'src/utils/format.ts', - 'src/models/User.ts', - 'src/index.ts', - ]; - const dirs = inferRouteDirectories(files); - expect(dirs).toBeUndefined(); - }); - }); - describe('STOP_WORDS', () => { it('should contain common English stop words', () => { expect(STOP_WORDS.has('the')).toBe(true); diff --git a/src/search/query-utils.ts b/src/search/query-utils.ts index e08d66e..8f16340 100644 --- a/src/search/query-utils.ts +++ b/src/search/query-utils.ts @@ -1,7 +1,7 @@ /** * Search Query Utilities * - * Shared module for search term extraction, scoring, and intent detection. + * Shared module for search term extraction and scoring. */ import * as path from 'path'; @@ -87,43 +87,3 @@ export function kindBonus(kind: Node['kind']): number { }; return bonuses[kind] ?? 0; } - -/** - * Detect if a query has API/endpoint intent - */ -export function detectApiIntent(query: string): boolean { - const apiPatterns = [ - /\bapi\b/i, /\bendpoint/i, /\broute/i, /\bhandler/i, - /\bcontroller/i, /\bmiddleware/i, /\brest\b/i, /\bgraphql/i, - /\bget\s+\//, /\bpost\s+\//, /\bput\s+\//, /\bdelete\s+\//, - /\brequest/i, /\bresponse/i, /\bhttp/i, - ]; - return apiPatterns.some(p => p.test(query)); -} - -/** - * Infer route/controller directories from project structure - * Returns undefined if no route directories are detected - */ -export function inferRouteDirectories(files: string[]): string[] | undefined { - const routeDirs = new Set(); - const routePatterns = [ - /routes?\//i, /controllers?\//i, /handlers?\//i, - /api\//i, /endpoints?\//i, - ]; - - for (const file of files) { - for (const pattern of routePatterns) { - if (pattern.test(file)) { - const match = file.match(pattern); - if (match) { - const idx = file.indexOf(match[0]); - const dir = file.substring(0, idx + match[0].length - 1); - routeDirs.add(dir); - } - } - } - } - - return routeDirs.size > 0 ? Array.from(routeDirs) : undefined; -}