fix: recover empty validation compilations

This commit is contained in:
Hermes Agent
2026-08-30 00:55:48 +10:00
parent 2c731f4982
commit c7358ac97d
4 changed files with 44 additions and 8 deletions
+1 -1
View File
@@ -3,7 +3,7 @@
"label": "Ollama Models",
"description": "Inspect, manage, and chat with local Ollama models, including shared persistent conversations, performance metrics, images, PDFs, URLs, and live memory telemetry.",
"icon": "Cpu",
"version": "1.7.9",
"version": "1.7.10",
"tab": {"path": "/ollama-manager", "position": "after:models"},
"entry": "dist/index.js",
"css": "dist/style.css",
+6 -6
View File
@@ -2150,13 +2150,13 @@ def _run_validation_harness(
metrics.append(_persist_metric(conversation_id, final_id, primary, final_state, status="completed"))
final_message = final_result.get("message") if isinstance(final_result.get("message"), dict) else {}
final_content = str(final_message.get("content") or "").strip()
if not final_content:
raise HTTPException(502, "Primary model returned an empty compiled answer")
if _looks_like_validation_report(final_content):
compiler_needs_retry = not final_content or _looks_like_validation_report(final_content)
if compiler_needs_retry:
retry_id = uuid.uuid4().hex
retry_started = time.time()
retry_reason = "empty output" if not final_content else "review text"
_persist_chat_stage(request_id, "compiler-retry", primary, "running", retry_started)
_persist_chat_event(request_id, conversation_id, "compiler-retry-started", level="warning", stage="Primary returned review text; requesting final answer", model=primary)
_persist_chat_event(request_id, conversation_id, "compiler-retry-started", level="warning", stage=f"Primary returned {retry_reason}; requesting final answer", model=primary)
_chat_state(retry_id, state="preparing", stage="Preparing final-answer retry", model=primary, parent_id=request_id, conversation_id=conversation_id)
retry_payload = _chat_payload(
body,
@@ -2178,8 +2178,8 @@ def _run_validation_harness(
_persist_chat_event(request_id, conversation_id, "compiler-retry-completed", stage="Final answer retry completed", model=primary, payload={"output_chars": len(final_content)})
else:
final_content = draft
_persist_chat_stage(request_id, "compiler-retry", primary, "fallback", retry_started, finished_at=retry_finished, output_chars=len(final_content), error="Primary returned review text twice; preserved the primary draft")
_persist_chat_event(request_id, conversation_id, "compiler-retry-fallback", level="warning", stage="Preserved primary draft after invalid finalization", model=primary, payload={"output_chars": len(final_content)})
_persist_chat_stage(request_id, "compiler-retry", primary, "fallback", retry_started, finished_at=retry_finished, output_chars=len(final_content), error=f"Primary returned {retry_reason} twice; preserved the primary draft")
_persist_chat_event(request_id, conversation_id, "compiler-retry-fallback", level="warning", stage="Preserved primary draft after invalid finalization", model=primary, payload={"output_chars": len(final_content), "reason": retry_reason})
compiler_finished = time.time()
_persist_chat_stage(request_id, "compiler", primary, "completed", compiler_started, finished_at=compiler_finished, output_chars=len(final_content))
_persist_chat_event(request_id, conversation_id, "compiler-completed", stage="Primary final answer compiled", model=primary, payload={"output_chars": len(final_content)})