From ffcc34dfc7aac9d2a4699de3c70b9f86d5dfa7be Mon Sep 17 00:00:00 2001 From: hugocasa Date: Mon, 27 Oct 2025 22:19:20 +0100 Subject: [PATCH] fix(frontend): larger object limit for pdfs and files (#6961) * fix(frontend): larger object limit for pdfs and files * nit * mini opti * nit --- .../src/lib/components/DisplayResult.svelte | 85 +++++++++---------- 1 file changed, 39 insertions(+), 46 deletions(-) diff --git a/frontend/src/lib/components/DisplayResult.svelte b/frontend/src/lib/components/DisplayResult.svelte index c2e0dae14d..8da624ddd8 100644 --- a/frontend/src/lib/components/DisplayResult.svelte +++ b/frontend/src/lib/components/DisplayResult.svelte @@ -42,10 +42,12 @@ import ResultStreamDisplay from './ResultStreamDisplay.svelte' import { twMerge } from 'tailwind-merge' - const IMG_MAX_SIZE = 10000000 const TABLE_MAX_SIZE = 5000000 const DISPLAY_MAX_SIZE = 100000 + const IMG_KINDS = ['png', 'svg', 'jpeg', 'gif'] + const NO_SIZE_LIMIT_KINDS = [...IMG_KINDS, 'pdf', 'file', 'filename', 'html'] + const dispatch = createEventDispatcher() type ResultKind = @@ -199,14 +201,6 @@ is_render_all = keys.length == 1 && keys.includes('render_all') && Array.isArray(result['render_all']) - // Check if the result is an image - if (['png', 'svg', 'jpeg', 'html', 'gif'].includes(keys[0]) && keys.length == 1) { - // Check if the image is too large (10mb) - largeObject = roughSizeOfObject(result) > IMG_MAX_SIZE - - return keys[0] as 'png' | 'svg' | 'jpeg' | 'html' | 'gif' - } - let size = roughSizeOfObject(result) console.debug('size of object', size) // Otherwise, check if the result is too large (10kb) for json @@ -253,26 +247,20 @@ return keys[0] as 'table-row' | 'table-row-object' | 'table-col' } - if (largeObject) { - return 'json' - } - if (keys.length != 0) { - if (keys.length == 1 && keys[0] === 'html') { - return 'html' - } else if (keys.length == 1 && keys[0] === 'map') { - return 'map' - } else if (keys.length == 1 && keys[0] === 'pdf') { - return 'pdf' - } else if (keys.length == 1 && keys[0] === 'file') { - return 'file' + if ( + keys.length == 1 && + [...IMG_KINDS, 'html', 'map', 'pdf', 'file', 'error'].includes(keys[0]) + ) { + return !largeObject || NO_SIZE_LIMIT_KINDS.includes(keys[0]) + ? (keys[0] as ResultKind) + : 'json' } else if ( + !largeObject && keys.includes('windmill_content_type') && result['windmill_content_type'].startsWith('text/') ) { return 'plain' - } else if (keys.length == 1 && keys[0] === 'error') { - return 'error' } else if (keys.length === 2 && keys.includes('file') && keys.includes('filename')) { return 'file' } else if ( @@ -290,39 +278,44 @@ } return 'file' } else if ( + !largeObject && keys.includes('resume') && keys.includes('cancel') && keys.includes('approvalPage') ) { return 'approval' - } else if (checkIfS3(result, keys)) { + } else if (!largeObject && checkIfS3(result, keys)) { return 's3object' - } else if (keys.length === 1 && (keys.includes('md') || keys.includes('markdown'))) { + } else if ( + !largeObject && + keys.length === 1 && + (keys[0] === 'md' || keys[0] === 'markdown') + ) { return 'markdown' - } else if (isTableCol(result, keys)) { + } else if (!largeObject && isTableCol(result, keys)) { return 'table-col' } else if (keys.length < 1000 && keys.includes('wm_renderer')) { const renderer = result['wm_renderer'] - if (typeof renderer === 'string') { - if ( - [ - 'json', - 'html', - 'png', - 'file', - 'jpeg', - 'gif', - 'svg', - 'filename', - 's3object', - 'plain', - 'markdown', - 'map', - 'pdf' - ].includes(renderer) - ) { - return renderer as ResultKind - } + if ( + typeof renderer === 'string' && + (!largeObject || NO_SIZE_LIMIT_KINDS.includes(renderer)) && + [ + 'json', + 'html', + 'png', + 'file', + 'jpeg', + 'gif', + 'svg', + 'filename', + 's3object', + 'plain', + 'markdown', + 'map', + 'pdf' + ].includes(renderer) + ) { + return renderer as ResultKind } } }