status.mojo (5764B)
1 from std.collections import List 2 3 from json import Value, loads 4 5 from hyf_stdio.control.assisted_runtime import ( 6 resolve_assisted_runtime_status, 7 serialize_assisted_runtime_status_value, 8 ) 9 from hyf_core.capabilities.registry import ( 10 all_deterministic_capabilities_implemented, 11 bootstrap_capability_count, 12 deterministic_enabled_capabilities, 13 deferred_capabilities, 14 implemented_deterministic_capability_count, 15 ) 16 from hyf_core.metadata import current_build_identity 17 from hyf_runtime.config import assisted_execution_enabled 18 from hyf_runtime.startup import ( 19 RuntimeStartupContext, 20 resolve_startup_context_from_process, 21 ) 22 from hyf_runtime.status import build_runtime_status_value 23 from hyf_stdio.control.request_context_contract import ( 24 build_request_context_contract_value, 25 ) 26 27 28 def _string_array(values: List[String]) raises -> Value: 29 var array = loads("[]") 30 for value in values: 31 array.append(Value(String(value))) 32 return array^ 33 34 35 def _build_identity_value() raises -> Value: 36 var build_identity = current_build_identity() 37 var value = loads("{}") 38 value.set("service_name", Value(String(build_identity.service_name))) 39 value.set("package_name", Value(String(build_identity.package_name))) 40 value.set("package_version", Value(String(build_identity.package_version))) 41 value.set("daemon_name", Value(String(build_identity.daemon_name))) 42 value.set("transport", Value(String(build_identity.transport))) 43 value.set("protocol_version", Value(build_identity.protocol_version)) 44 value.set( 45 "default_execution_mode", 46 Value(String(build_identity.default_execution_mode)), 47 ) 48 value.set( 49 "deterministic_execution_available", 50 Value(build_identity.deterministic_execution_available), 51 ) 52 value.set( 53 "assisted_execution_available", 54 Value(build_identity.assisted_execution_available), 55 ) 56 return value^ 57 58 59 def build_status_output() raises -> Value: 60 return build_status_output_with_runtime_context( 61 resolve_startup_context_from_process() 62 ) 63 64 65 def build_status_output_with_runtime_context( 66 runtime_context: RuntimeStartupContext, 67 ) raises -> Value: 68 var output = loads("{}") 69 var build_identity = _build_identity_value() 70 var assisted_enabled = assisted_execution_enabled(runtime_context.config) 71 var assist_runtime = resolve_assisted_runtime_status(runtime_context.config) 72 output.set("build_identity", build_identity.copy()) 73 output.set("daemon", build_identity["daemon_name"].clone()) 74 output.set("transport", build_identity["transport"].clone()) 75 output.set("request_framing", Value("newline_delimited_json")) 76 output.set( 77 "implementation_status", 78 Value( 79 "bootstrap_registered_deterministic_ready" 80 ) if all_deterministic_capabilities_implemented() else Value( 81 "bootstrap_partial_deterministic" 82 ), 83 ) 84 85 var execution_modes = loads("{}") 86 execution_modes.set("deterministic", Value(True)) 87 execution_modes.set("assisted", Value(assisted_enabled)) 88 output.set("enabled_execution_modes", execution_modes) 89 90 var execution_mode_request_behavior = loads("{}") 91 execution_mode_request_behavior.set("deterministic", Value("execute")) 92 var assisted_request_behavior = "provider_unavailable" 93 if assist_runtime.state == "ready": 94 assisted_request_behavior = "execute" 95 elif assist_runtime.state == "disabled_by_runtime_config": 96 assisted_request_behavior = "disabled_by_runtime_config" 97 elif assist_runtime.state == "unconfigured": 98 assisted_request_behavior = "provider_unconfigured" 99 elif assist_runtime.state == "invalid_config": 100 assisted_request_behavior = "invalid_config" 101 elif assist_runtime.state == "degraded": 102 assisted_request_behavior = "provider_degraded" 103 execution_mode_request_behavior.set( 104 "assisted", Value(String(assisted_request_behavior)) 105 ) 106 output.set( 107 "execution_mode_request_behavior", 108 execution_mode_request_behavior, 109 ) 110 111 var backends = loads("{}") 112 backends.set( 113 "deterministic_backend", 114 Value( 115 "available" 116 ) if all_deterministic_capabilities_implemented() else Value( 117 "partially_available" 118 ), 119 ) 120 backends.set("assisted_backend", Value(String(assist_runtime.state))) 121 output.set("backend_reachability", backends) 122 output.set( 123 "assisted_runtime", 124 serialize_assisted_runtime_status_value(assist_runtime), 125 ) 126 output.set( 127 "provider_runtime", 128 serialize_assisted_runtime_status_value(assist_runtime), 129 ) 130 131 var counts = loads("{}") 132 counts.set( 133 "canonical_business_capabilities", Value(bootstrap_capability_count()) 134 ) 135 counts.set( 136 "deterministic_registered_business_capabilities", 137 Value(len(deterministic_enabled_capabilities())), 138 ) 139 counts.set( 140 "deterministic_implemented_business_capabilities", 141 Value(implemented_deterministic_capability_count()), 142 ) 143 counts.set( 144 "disabled_business_capabilities", 145 Value(len(deferred_capabilities())), 146 ) 147 output.set("counts", counts) 148 149 output.set( 150 "deterministic_registered_capabilities", 151 _string_array(deterministic_enabled_capabilities()), 152 ) 153 output.set("disabled_capabilities", _string_array(deferred_capabilities())) 154 155 var limits = loads("{}") 156 limits.set("max_requests_per_process", Value(1)) 157 output.set("limits", limits) 158 output.set( 159 "request_context_contract", 160 build_request_context_contract_value(), 161 ) 162 output.set("runtime", build_runtime_status_value(runtime_context)) 163 164 return output^