--- before.py +++ fixed.py @@ -1,16 +1,22 @@ -"""Variante BEFORE de la demo de arnés determinista (traza sintética). +"""Variante FIXED de la demo de arnés determinista (traza sintética). -Parser de la respuesta de la herramienta de solo lectura `catalogo.buscar` -(catálogo de biblioteca ficticio). - -Fallo intencionado: solo comprueba que exista `content` y lo da por respuesta -válida, sin mirar `status`. Un error de la herramienta se cuela como si fuera -la respuesta del catálogo. +Mismo parser que before.py con un único cambio general en el arnés: +la respuesta solo es válida si la herramienta declara status == "ok". +Cualquier otro valor de status, o su ausencia, se trata como fallo de la +herramienta y se propaga su error_code. No se inspecciona el texto de +`content` ni se enumeran códigos de error concretos. """ def parse_tool_response(response: dict) -> dict: content = response.get("content") + # Único cambio respecto a before.py: el veredicto sale del campo estructurado status. + if response.get("status") != "ok": + return { + "ok": False, + "error_code": response.get("error_code", "UNKNOWN"), + "message": content if content is not None else "", + } if content is None: return {"ok": False, "error_code": "EMPTY_RESPONSE", "message": ""} return {"ok": True, "answer": content}