'use server' import { semanticSearchService, SearchResult } from '@/lib/ai/services/semantic-search.service' export interface SemanticSearchResponse { results: SearchResult[] query: string totalResults: number } /** * Perform hybrid semantic + keyword search * Supports contextual search within notebook (IA5) */ export async function semanticSearch( query: string, options?: { limit?: number threshold?: number notebookId?: string // NEW: Filter by notebook for contextual search (IA5) } ): Promise { try { const results = await semanticSearchService.search(query, { limit: options?.limit || 20, threshold: options?.threshold || 0.6, notebookId: options?.notebookId // NEW: Pass notebook filter }) return { results, query, totalResults: results.length } } catch (error) { console.error('Error in semantic search action:', error) throw error } } /** * Index a note for semantic search (generate embedding) */ export async function indexNote(noteId: string): Promise { try { await semanticSearchService.indexNote(noteId) } catch (error) { console.error('Error indexing note:', error) throw error } } /** * Batch index notes (for initial setup) */ export async function batchIndexNotes(noteIds: string[]): Promise { try { await semanticSearchService.indexBatchNotes(noteIds) } catch (error) { console.error('Error batch indexing notes:', error) throw error } }