Skip to content

Commit c6a9469

Browse files
committed
Fix bugs
1 parent b8191a3 commit c6a9469

File tree

2 files changed

+55
-47
lines changed

2 files changed

+55
-47
lines changed

apps/sim/app/api/wand/route.ts

Lines changed: 50 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -374,62 +374,65 @@ Use this context to calculate relative dates like "yesterday", "last week", "beg
374374
return
375375
}
376376

377+
let parsed: any
377378
try {
378-
const parsed = JSON.parse(data)
379-
const eventType = parsed?.type ?? activeEventType
380-
381-
if (
382-
eventType === 'response.error' ||
383-
eventType === 'error' ||
384-
activeEventType === 'response.failed'
385-
) {
386-
throw new Error(parsed?.error?.message || 'Responses stream error')
387-
}
379+
parsed = JSON.parse(data)
380+
} catch (parseError) {
381+
logger.debug(`[${requestId}] Skipped non-JSON line: ${data.substring(0, 100)}`)
382+
continue
383+
}
388384

389-
if (
390-
eventType === 'response.output_text.delta' ||
391-
eventType === 'response.output_json.delta'
392-
) {
393-
let content = ''
394-
if (typeof parsed.delta === 'string') {
395-
content = parsed.delta
396-
} else if (parsed.delta && typeof parsed.delta.text === 'string') {
397-
content = parsed.delta.text
398-
} else if (parsed.delta && parsed.delta.json !== undefined) {
399-
content = JSON.stringify(parsed.delta.json)
400-
} else if (parsed.json !== undefined) {
401-
content = JSON.stringify(parsed.json)
402-
} else if (typeof parsed.text === 'string') {
403-
content = parsed.text
404-
}
385+
const eventType = parsed?.type ?? activeEventType
405386

406-
if (content) {
407-
chunkCount++
408-
if (chunkCount === 1) {
409-
logger.info(`[${requestId}] Received first content chunk`)
410-
}
387+
if (
388+
eventType === 'response.error' ||
389+
eventType === 'error' ||
390+
eventType === 'response.failed'
391+
) {
392+
throw new Error(parsed?.error?.message || 'Responses stream error')
393+
}
411394

412-
controller.enqueue(
413-
encoder.encode(`data: ${JSON.stringify({ chunk: content })}\n\n`)
414-
)
395+
if (
396+
eventType === 'response.output_text.delta' ||
397+
eventType === 'response.output_json.delta'
398+
) {
399+
let content = ''
400+
if (typeof parsed.delta === 'string') {
401+
content = parsed.delta
402+
} else if (parsed.delta && typeof parsed.delta.text === 'string') {
403+
content = parsed.delta.text
404+
} else if (parsed.delta && parsed.delta.json !== undefined) {
405+
content = JSON.stringify(parsed.delta.json)
406+
} else if (parsed.json !== undefined) {
407+
content = JSON.stringify(parsed.json)
408+
} else if (typeof parsed.text === 'string') {
409+
content = parsed.text
410+
}
411+
412+
if (content) {
413+
chunkCount++
414+
if (chunkCount === 1) {
415+
logger.info(`[${requestId}] Received first content chunk`)
415416
}
417+
418+
controller.enqueue(
419+
encoder.encode(`data: ${JSON.stringify({ chunk: content })}\n\n`)
420+
)
416421
}
422+
}
417423

418-
if (eventType === 'response.completed') {
419-
const usage = parseResponsesUsage(parsed?.response?.usage ?? parsed?.usage)
420-
if (usage) {
421-
finalUsage = {
422-
prompt_tokens: usage.promptTokens,
423-
completion_tokens: usage.completionTokens,
424-
total_tokens: usage.totalTokens,
425-
}
426-
logger.info(
427-
`[${requestId}] Received usage data: ${JSON.stringify(finalUsage)}`
428-
)
424+
if (eventType === 'response.completed') {
425+
const usage = parseResponsesUsage(parsed?.response?.usage ?? parsed?.usage)
426+
if (usage) {
427+
finalUsage = {
428+
prompt_tokens: usage.promptTokens,
429+
completion_tokens: usage.completionTokens,
430+
total_tokens: usage.totalTokens,
429431
}
432+
logger.info(
433+
`[${requestId}] Received usage data: ${JSON.stringify(finalUsage)}`
434+
)
430435
}
431-
} catch (parseError) {
432-
logger.debug(`[${requestId}] Skipped non-JSON line: ${data.substring(0, 100)}`)
433436
}
434437
}
435438
}

apps/sim/providers/openai/core.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -544,6 +544,11 @@ export async function executeResponsesProviderRequest(
544544
currentTrackingToolChoice
545545
)
546546

547+
const latestText = extractResponseText(currentResponse.output)
548+
if (latestText) {
549+
content = latestText
550+
}
551+
547552
const nextModelEndTime = Date.now()
548553
const thisModelTime = nextModelEndTime - nextModelStartTime
549554

0 commit comments

Comments
 (0)