incognitolm commited on
Commit
a16dc1f
·
1 Parent(s): cfae871

Update wsHandler.js

Browse files
Files changed (1) hide show
  1. server/wsHandler.js +11 -4
server/wsHandler.js CHANGED
@@ -214,7 +214,11 @@ const handlers = {
214
  async onDone(text, toolCalls, aborted, sessionNameFromTag) {
215
  activeStreams.delete(ws);
216
  const finalText = text || fullText;
217
- const userEntry = buildEntry('user', content);
 
 
 
 
218
 
219
  const resolvedMap = new Map(toolCallsCollected.map(c => [c.id, c]));
220
  const mergedCalls = (toolCalls || []).map(c => {
@@ -227,7 +231,8 @@ const handlers = {
227
  let newRootMessage = rootMessage ? validateAndRepairTree(JSON.parse(JSON.stringify(rootMessage))) : null;
228
 
229
  if (!newRootMessage) {
230
- // First message in session
 
231
  newRootMessage = userEntry;
232
  const asstWrap = { ...asstEntry };
233
  newRootMessage.versions[0].tail = [asstWrap];
@@ -236,7 +241,9 @@ const handlers = {
236
  const currentVerIdx = newRootMessage.currentVersionIdx ?? 0;
237
  let currentTail = newRootMessage.versions[currentVerIdx].tail || [];
238
  currentTail = JSON.parse(JSON.stringify(currentTail));
239
- currentTail.push(userEntry);
 
 
240
  currentTail.push(asstEntry);
241
  newRootMessage.versions[currentVerIdx].tail = currentTail;
242
  }
@@ -433,7 +440,7 @@ function extractFlatHistory(rootMessage) {
433
 
434
  // Helper to ensure message has valid content
435
  const ensureValidContent = (msg) => {
436
- if (!msg.content && msg.content !== '' && msg.content !== 0) {
437
  console.warn(`Message ${msg.id} has missing content, defaulting to empty string`);
438
  msg.content = '';
439
  }
 
214
  async onDone(text, toolCalls, aborted, sessionNameFromTag) {
215
  activeStreams.delete(ws);
216
  const finalText = text || fullText;
217
+
218
+ // Only create user entry if content was actually provided
219
+ const userEntry = (content !== undefined && content !== null && content !== '')
220
+ ? buildEntry('user', content)
221
+ : null;
222
 
223
  const resolvedMap = new Map(toolCallsCollected.map(c => [c.id, c]));
224
  const mergedCalls = (toolCalls || []).map(c => {
 
231
  let newRootMessage = rootMessage ? validateAndRepairTree(JSON.parse(JSON.stringify(rootMessage))) : null;
232
 
233
  if (!newRootMessage) {
234
+ // First message in session - must have user entry
235
+ if (!userEntry) return safeSend(ws, { type: 'error', message: 'No content for first message' });
236
  newRootMessage = userEntry;
237
  const asstWrap = { ...asstEntry };
238
  newRootMessage.versions[0].tail = [asstWrap];
 
241
  const currentVerIdx = newRootMessage.currentVersionIdx ?? 0;
242
  let currentTail = newRootMessage.versions[currentVerIdx].tail || [];
243
  currentTail = JSON.parse(JSON.stringify(currentTail));
244
+ if (userEntry) {
245
+ currentTail.push(userEntry);
246
+ }
247
  currentTail.push(asstEntry);
248
  newRootMessage.versions[currentVerIdx].tail = currentTail;
249
  }
 
440
 
441
  // Helper to ensure message has valid content
442
  const ensureValidContent = (msg) => {
443
+ if (msg.content === undefined || msg.content === null) {
444
  console.warn(`Message ${msg.id} has missing content, defaulting to empty string`);
445
  msg.content = '';
446
  }