hyf

Context-aware query service for Radroots
git clone https://radroots.dev/git/hyf.git
Log | Files | Refs | README | LICENSE

internal_error_stdio_main.mojo (2014B)


      1 from std.io.io import _fdopen
      2 from std.sys import stdin
      3 
      4 from hyf_core.metadata import hyf_protocol_version
      5 from hyf_runtime.diagnostics import effective_diagnostics_dir_for_runtime_paths
      6 from hyf_runtime.startup import resolve_startup_context_from_process
      7 from hyf_stdio.codec import decode_request, encode_error, extract_request_correlation
      8 from hyf_stdio.envelope import WireErrorResponse
      9 from hyf_stdio.errors import internal_error, invalid_request_error
     10 from hyf_stdio.server import (
     11     _emit_internal_diagnostic,
     12 )
     13 
     14 
     15 def _read_request_line() raises -> String:
     16     with _fdopen["r"](stdin) as input_file:
     17         return input_file.readline()
     18 
     19 
     20 def _simulated_internal_error_detail() -> String:
     21     return "simulated test-only status builder failure"
     22 
     23 
     24 def main() raises:
     25     if stdin.isatty():
     26         return
     27 
     28     var line = _read_request_line()
     29     var startup_context = resolve_startup_context_from_process()
     30     try:
     31         var request = decode_request(line)
     32         var decoded = request^
     33         _emit_internal_diagnostic(
     34             String(decoded.request_id),
     35             decoded.trace_id,
     36             String(decoded.capability),
     37             _simulated_internal_error_detail(),
     38             effective_diagnostics_dir_for_runtime_paths(startup_context.paths),
     39         )
     40         print(
     41             encode_error(
     42                 WireErrorResponse(
     43                     version=hyf_protocol_version(),
     44                     request_id=String(decoded.request_id),
     45                     trace_id=decoded.trace_id,
     46                     error=internal_error(),
     47                 )
     48             )
     49         )
     50     except e:
     51         var correlation = extract_request_correlation(line)
     52         print(
     53             encode_error(
     54                 WireErrorResponse(
     55                     version=hyf_protocol_version(),
     56                     request_id=correlation.request_id,
     57                     trace_id=correlation.trace_id,
     58                     error=invalid_request_error(String(e)),
     59                 )
     60             )
     61         )