devjhawar commited on
Commit
ee47272
·
verified ·
1 Parent(s): 97e4486

Upload folder using huggingface_hub

Browse files
Files changed (1) hide show
  1. backend/src/routes/query.js +30 -4
backend/src/routes/query.js CHANGED
@@ -40,12 +40,37 @@ router.post('/query/stream', authMiddleware, async (req, res) => {
40
  question, policy_id, k
41
  }, { responseType: 'stream' });
42
 
43
- res.setHeader('Content-Type', 'text/plain');
 
 
44
 
45
- let fullAnswer = "";
 
 
 
46
  response.data.on('data', (chunk) => {
47
- fullAnswer += chunk.toString();
48
  res.write(chunk);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
49
  });
50
 
51
  response.data.on('end', async () => {
@@ -55,7 +80,8 @@ router.post('/query/stream', authMiddleware, async (req, res) => {
55
  user_id: req.user?.id || 'anonymous',
56
  policy_id,
57
  question,
58
- answer: fullAnswer
 
59
  });
60
  } catch (dbErr) {
61
  console.error('[query/stream] DB Save Error:', dbErr.message);
 
40
  question, policy_id, k
41
  }, { responseType: 'stream' });
42
 
43
+ res.setHeader('Content-Type', 'text/event-stream');
44
+ res.setHeader('Cache-Control', 'no-cache');
45
+ res.setHeader('Connection', 'keep-alive');
46
 
47
+ let answerText = "";
48
+ let sourcesData = null;
49
+ let buffer = "";
50
+
51
  response.data.on('data', (chunk) => {
 
52
  res.write(chunk);
53
+
54
+ buffer += chunk.toString();
55
+ const lines = buffer.split('\n\n');
56
+ buffer = lines.pop() || '';
57
+
58
+ for (const line of lines) {
59
+ if (line.startsWith('data: ')) {
60
+ const jsonStr = line.slice(6).trim();
61
+ if (jsonStr === '[DONE]') continue;
62
+ try {
63
+ const parsed = JSON.parse(jsonStr);
64
+ if (parsed.type === 'token') {
65
+ answerText += parsed.content;
66
+ } else if (parsed.type === 'sources') {
67
+ sourcesData = parsed.sources;
68
+ }
69
+ } catch (e) {
70
+ // ignore partial JSON parse errors
71
+ }
72
+ }
73
+ }
74
  });
75
 
76
  response.data.on('end', async () => {
 
80
  user_id: req.user?.id || 'anonymous',
81
  policy_id,
82
  question,
83
+ answer: answerText,
84
+ sources: sourcesData
85
  });
86
  } catch (dbErr) {
87
  console.error('[query/stream] DB Save Error:', dbErr.message);