import json from apps.admin_console.database.repositories.step_repository import StepRepository def test_legacy_pause_log_is_normalized_to_failed_llm_trace(): repository = StepRepository() trace = { "trace_id": "pause-log", "type": "log", "name": "artemis.services.llm", "status": "success", "payload": json.dumps( { "message": ( "LLM Error: 503 UNAVAILABLE. {'error': {'message': 'High demand'}}. " "Pausing execution to wait for resume signal..." ) } ), } normalized = repository._normalize_display_trace(trace) assert normalized["type"] == "llm_call" assert normalized["name"] == "llm_pause" assert normalized["status"] == "failed" assert normalized["payload"]["pause"] is True assert normalized["payload"]["error"].startswith("503 UNAVAILABLE") def test_unrelated_log_is_not_presented_as_llm_failure(): repository = StepRepository() trace = { "trace_id": "ordinary-log", "type": "log", "name": "artemis.services.llm", "status": "success", "payload": json.dumps({"message": "LLM request completed"}), } normalized = repository._normalize_display_trace(trace) assert normalized["type"] == "log" assert normalized["status"] == "success" def test_retrying_llm_payload_keeps_user_visible_retry_details(): repository = StepRepository() trace = { "trace_id": "retry-1", "type": "llm_call", "name": "llm_retry", "status": "retrying", "payload": json.dumps( { "error": "503 UNAVAILABLE: high demand", "delay": 1.18, "provider": "openai", "source": "provider_sdk", "recoverable": True, "internal_noise": "do not expose", } ), } normalized = repository._normalize_display_trace(trace) assert normalized["payload"] == { "error": "503 UNAVAILABLE: high demand", "delay": 1.18, "provider": "openai", "source": "provider_sdk", "recoverable": True, } def test_terminal_llm_payload_keeps_wait_and_retry_aggregation(): repository = StepRepository() retries = [ { "delay": 5.0, "scheduled_at": 100.0, "provider": "openai", "source": "provider_sdk", } ] trace = { "type": "llm_call", "name": "llm_pause", "status": "failed", "payload": json.dumps( { "error": "503 UNAVAILABLE", "pause": True, "request_id": "request-1", "provider": "openai", "waited_seconds": 18.5, "retries": retries, "messages": ["private prompt"], } ), } normalized = repository._normalize_display_trace(trace) assert normalized["payload"] == { "error": "503 UNAVAILABLE", "provider": "openai", "pause": True, "request_id": "request-1", "waited_seconds": 18.5, "retries": retries, }