Skip to content

Commit 86d39ef

Browse files
committed
fix(sse): address review feedback - security and missing events
Fixes based on Gemini and CodeRabbit reviews: 1. [CRITICAL] Add 'enrichment_error' to CRITICAL_EVENT_TYPES - Prevents error events from being silently dropped when buffer full 2. [SECURITY] Remove raw exception from SSE error messages (3 files) - Prevents leaking sensitive info (e.g., GitHub tokens in git clone errors) - Generic 'internal error' message sent to client, full error logged server-side 3. [BUG] Add missing complete event for empty docs case in rag_enrich.py - Previously SSE subscribers would remain stuck in 'in progress' state 4. [IMPROVE] code_analysis_enrich.py: reflect actual status in message - Message now shows 'complete', 'partial', or 'skipped' accurately
1 parent 6297f18 commit 86d39ef

4 files changed

Lines changed: 16 additions & 4 deletions

File tree

backend/app/graph/nodes/code_analysis_enrich.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -107,7 +107,7 @@ async def code_analysis_enrich(
107107
sommelier="code_analysis",
108108
event_type="enrichment_complete",
109109
progress_percent=100,
110-
message=f"Code analysis complete ({files_count} files)",
110+
message=f"Code analysis {status} ({files_count} files analyzed)",
111111
),
112112
)
113113

@@ -138,7 +138,7 @@ async def code_analysis_enrich(
138138
sommelier="code_analysis",
139139
event_type="enrichment_error",
140140
progress_percent=100,
141-
message=f"Code analysis failed: {e}",
141+
message="Code analysis failed due to an internal error.",
142142
),
143143
)
144144
return {

backend/app/graph/nodes/rag_enrich.py

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -164,6 +164,17 @@ async def rag_enrich(
164164
try:
165165
docs = _build_documents_from_context(repo_context)
166166
if not docs:
167+
if evaluation_id:
168+
event_channel.emit_sync(
169+
evaluation_id,
170+
create_sommelier_event(
171+
evaluation_id=evaluation_id,
172+
sommelier="rag",
173+
event_type="enrichment_complete",
174+
progress_percent=100,
175+
message="RAG enrichment complete (no documents)",
176+
),
177+
)
167178
return {
168179
"rag_context": {"query": query, "chunks": [], "error": None},
169180
}
@@ -214,7 +225,7 @@ async def rag_enrich(
214225
sommelier="rag",
215226
event_type="enrichment_error",
216227
progress_percent=100,
217-
message=f"RAG enrichment failed: {e}",
228+
message="RAG enrichment failed due to an internal error.",
218229
),
219230
)
220231
return {

backend/app/graph/nodes/web_search_enrich.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -160,7 +160,7 @@ async def web_search_enrich(
160160
sommelier="web_search",
161161
event_type="enrichment_error",
162162
progress_percent=100,
163-
message=f"Web search failed: {e}",
163+
message="Web search failed due to an internal error.",
164164
),
165165
)
166166
return {

backend/app/services/event_channel.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@
4040
"evaluation_complete",
4141
"evaluation_error",
4242
"technique_error",
43+
"enrichment_error",
4344
}
4445
TRANSFER_LOOP_INTERVAL_SECONDS = 0.01
4546
TRANSFER_BATCH_SIZE = 10

0 commit comments

Comments
 (0)