import { DEBUG, API_URL } from './config.js' export async function fetchSuggestion(prefix, suffix, apiUrl = API_URL) { if (DEBUG) console.log('[Debug] fetchSuggestion called with prefix length:', prefix.length, 'suffix length:', suffix.length) try { const res = await fetch(apiUrl, { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ prefix, suffix, languageId: 'markdown' }), }) if (DEBUG) console.log('[Debug] fetchSuggestion response status:', res.status) if (!res.ok) { const errorText = await res.text() throw new Error(`HTTP ${res.status}: ${errorText}`) } const reader = res.body?.getReader() if (!reader) { if (DEBUG) console.log('[Debug] No reader available') throw new Error('No reader available') } let text = '' while (true) { const { done, value } = await reader.read() if (done) break const chunk = new TextDecoder().decode(value) if (DEBUG) console.log('[Debug] Received chunk:', chunk.substring(0, 100)) const lines = chunk.split('\n').filter(l => l.startsWith('data: ')) for (const line of lines) { try { const data = JSON.parse(line.slice(6)) if (data.content) { text += data.content if (DEBUG) console.log('[Debug] Added content:', data.content) } if (data.done || data.error) break } catch (e) { if (DEBUG) console.warn('[Debug] JSON parse error:', e) } } } if (DEBUG) console.log('[Debug] Final suggestion text:', text.substring(0, 100)) return text } catch (e) { if (DEBUG) console.error('[Debug] fetchSuggestion error:', e) throw e } }