| 181 | } |
| 182 | |
| 183 | async sendSessionMessage( |
| 184 | sessionId: string, |
| 185 | message: string, |
| 186 | opts: { |
| 187 | model?: string; |
| 188 | composeSubAnswers?: boolean; |
| 189 | decompose?: boolean; |
| 190 | aiRerank?: boolean; |
| 191 | contextExpand?: boolean; |
| 192 | verify?: boolean; |
| 193 | // ✨ NEW RETRIEVAL PARAMETERS |
| 194 | retrievalK?: number; |
| 195 | contextWindowSize?: number; |
| 196 | rerankerTopK?: number; |
| 197 | searchType?: string; |
| 198 | denseWeight?: number; |
| 199 | forceRag?: boolean; |
| 200 | provencePrune?: boolean; |
| 201 | } = {} |
| 202 | ): Promise<SessionChatResponse & { source_documents: any[] }> { |
| 203 | try { |
| 204 | const response = await fetch(`${API_BASE_URL}/sessions/${sessionId}/messages`, { |
| 205 | method: 'POST', |
| 206 | headers: { |
| 207 | 'Content-Type': 'application/json', |
| 208 | }, |
| 209 | body: JSON.stringify({ |
| 210 | message, |
| 211 | ...(opts.model && { model: opts.model }), |
| 212 | ...(typeof opts.composeSubAnswers === 'boolean' && { compose_sub_answers: opts.composeSubAnswers }), |
| 213 | ...(typeof opts.decompose === 'boolean' && { query_decompose: opts.decompose }), |
| 214 | ...(typeof opts.aiRerank === 'boolean' && { ai_rerank: opts.aiRerank }), |
| 215 | ...(typeof opts.contextExpand === 'boolean' && { context_expand: opts.contextExpand }), |
| 216 | ...(typeof opts.verify === 'boolean' && { verify: opts.verify }), |
| 217 | // ✨ ADD NEW RETRIEVAL PARAMETERS |
| 218 | ...(typeof opts.retrievalK === 'number' && { retrieval_k: opts.retrievalK }), |
| 219 | ...(typeof opts.contextWindowSize === 'number' && { context_window_size: opts.contextWindowSize }), |
| 220 | ...(typeof opts.rerankerTopK === 'number' && { reranker_top_k: opts.rerankerTopK }), |
| 221 | ...(typeof opts.searchType === 'string' && { search_type: opts.searchType }), |
| 222 | ...(typeof opts.denseWeight === 'number' && { dense_weight: opts.denseWeight }), |
| 223 | ...(typeof opts.forceRag === 'boolean' && { force_rag: opts.forceRag }), |
| 224 | ...(typeof opts.provencePrune === 'boolean' && { provence_prune: opts.provencePrune }), |
| 225 | }), |
| 226 | }); |
| 227 | |
| 228 | if (!response.ok) { |
| 229 | const errorData = await response.json().catch(() => ({ error: 'Unknown error' })); |
| 230 | throw new Error(`Session chat error: ${errorData.error || response.statusText}`); |
| 231 | } |
| 232 | |
| 233 | return await response.json(); |
| 234 | } catch (error) { |
| 235 | console.error('Session chat failed:', error); |
| 236 | throw error; |
| 237 | } |
| 238 | } |
| 239 | |
| 240 | async deleteSession(sessionId: string): Promise<{ message: string; deleted_session_id: string }> { |