From b146596ee6f3a638d1f2d63be28769adec85fcac Mon Sep 17 00:00:00 2001 From: sauravniraula Date: Thu, 13 Nov 2025 03:18:29 +0545 Subject: [PATCH 1/3] fix: pass string to --reload rather than js boolean --- start.js | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/start.js b/start.js index dc7f839a..9dcc42f4 100644 --- a/start.js +++ b/start.js @@ -3,14 +3,7 @@ import { join, dirname } from "path"; import { fileURLToPath } from "url"; import { spawn } from "child_process"; -import { - existsSync, - mkdirSync, - rmSync, - cpSync, - readFileSync, - writeFileSync, -} from "fs"; +import { existsSync, mkdirSync, readFileSync, writeFileSync } from "fs"; const __filename = fileURLToPath(import.meta.url); const __dirname = dirname(__filename); @@ -111,7 +104,13 @@ const setupUserConfigFromEnv = () => { const startServers = async () => { const fastApiProcess = spawn( "python", - ["server.py", "--port", fastapiPort.toString(), "--reload", isDev], + [ + "server.py", + "--port", + fastapiPort.toString(), + "--reload", + isDev ? "true" : "false", + ], { cwd: fastapiDir, stdio: "inherit", From aa610d5c8606f19ccabc744dc6e24a4cbd8dd276 Mon Sep 17 00:00:00 2001 From: sauravniraula Date: Thu, 13 Nov 2025 03:25:18 +0545 Subject: [PATCH 2/3] fix: adds checks for empty openai choices --- servers/fastapi/services/llm_client.py | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/servers/fastapi/services/llm_client.py b/servers/fastapi/services/llm_client.py index 0ecde95e..9662122d 100644 --- a/servers/fastapi/services/llm_client.py +++ b/servers/fastapi/services/llm_client.py @@ -204,6 +204,10 @@ class LLMClient: tools=tools, extra_body=extra_body, ) + + if len(response.choices) == 0: + return None + tool_calls = response.choices[0].message.tool_calls if tool_calls: parsed_tool_calls = [ @@ -506,6 +510,9 @@ class LLMClient: extra_body=extra_body, ) + if len(response.choices) == 0: + return None + content = response.choices[0].message.content tool_calls = response.choices[0].message.tool_calls From 1e7950670fce84ea03bb6c0d72dd2304e44c3af1 Mon Sep 17 00:00:00 2001 From: sauravniraula Date: Thu, 13 Nov 2025 03:35:42 +0545 Subject: [PATCH 3/3] fix: issue with document loader in API endpoints --- servers/fastapi/api/v1/ppt/endpoints/presentation.py | 12 ++++++------ servers/fastapi/services/documents_loader.py | 8 +++++--- 2 files changed, 11 insertions(+), 9 deletions(-) diff --git a/servers/fastapi/api/v1/ppt/endpoints/presentation.py b/servers/fastapi/api/v1/ppt/endpoints/presentation.py index 9e0fd344..a2cbc4ed 100644 --- a/servers/fastapi/api/v1/ppt/endpoints/presentation.py +++ b/servers/fastapi/api/v1/ppt/endpoints/presentation.py @@ -223,7 +223,7 @@ async def prepare_presentation( i + 1 if presentation.include_title_slide else i, toc_slide_layout_index, ) - toc_outline = f"Table of Contents\n\n" + toc_outline = "Table of Contents\n\n" for outline in presentation_outline_model.slides[ outline_index:outlines_to @@ -478,7 +478,7 @@ async def check_if_api_request_is_valid( template = await sql_session.get(TemplateModel, uuid.UUID(template_id)) if not template: raise Exception() - except Exception as e: + except Exception: raise HTTPException( status_code=400, detail="Template not found. Please use a valid template.", @@ -554,7 +554,7 @@ async def generate_presentation_handler( presentation_outlines_json = dict( dirtyjson.loads(presentation_outlines_text) ) - except Exception as e: + except Exception: traceback.print_exc() raise HTTPException( status_code=400, @@ -577,7 +577,7 @@ async def generate_presentation_handler( # Updating async status if async_status: - async_status.message = f"Selecting layout for each slide" + async_status.message = "Selecting layout for each slide" async_status.updated_at = datetime.now() sql_session.add(async_status) await sql_session.commit() @@ -626,7 +626,7 @@ async def generate_presentation_handler( i + 1 if request.include_title_slide else i, toc_slide_layout_index, ) - toc_outline = f"Table of Contents\n\n" + toc_outline = "Table of Contents\n\n" for outline in presentation_outlines.slides[ outline_index:outlines_to @@ -811,7 +811,7 @@ async def generate_presentation_sync( return await generate_presentation_handler( request, presentation_id, None, sql_session ) - except Exception as e: + except Exception: traceback.print_exc() raise HTTPException(status_code=500, detail="Presentation generation failed") diff --git a/servers/fastapi/services/documents_loader.py b/servers/fastapi/services/documents_loader.py index a45fde9d..548d19e1 100644 --- a/servers/fastapi/services/documents_loader.py +++ b/servers/fastapi/services/documents_loader.py @@ -1,7 +1,7 @@ import mimetypes from fastapi import HTTPException import os, asyncio -from typing import List, Tuple +from typing import List, Optional, Tuple import pdfplumber from constants.documents import ( @@ -33,10 +33,12 @@ class DocumentsLoader: async def load_documents( self, - temp_dir: str, + temp_dir: Optional[str] = None, load_text: bool = True, load_images: bool = False, ): + """If load_images is True, temp_dir must be provided""" + documents: List[str] = [] images: List[str] = [] @@ -72,7 +74,7 @@ class DocumentsLoader: file_path: str, load_text: bool, load_images: bool, - temp_dir: str, + temp_dir: Optional[str] = None, ) -> Tuple[str, List[str]]: image_paths = [] document: str = ""