hyf

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

capabilities.mojo (3313B)


      1 from std.collections import List
      2 
      3 from json import Value, loads
      4 
      5 from hyf_stdio.control.assisted_runtime import (
      6     assisted_backend_available_for_capability,
      7     assisted_execution_state_for_capability,
      8     resolve_assisted_runtime_status,
      9     serialize_assisted_runtime_status_value,
     10 )
     11 from hyf_core.capabilities.registry import canonical_business_capabilities
     12 from hyf_runtime.startup import (
     13     RuntimeStartupContext,
     14     resolve_startup_context_from_process,
     15 )
     16 from hyf_stdio.control.request_context_contract import (
     17     build_request_context_contract_value,
     18 )
     19 
     20 
     21 def _string_array(values: List[String]) raises -> Value:
     22     var array = loads("[]")
     23     for value in values:
     24         array.append(Value(String(value)))
     25     return array^
     26 
     27 
     28 def build_capabilities_output() raises -> Value:
     29     return build_capabilities_output_with_runtime_context(
     30         resolve_startup_context_from_process()
     31     )
     32 
     33 
     34 def build_capabilities_output_with_runtime_context(
     35     runtime_context: RuntimeStartupContext,
     36 ) raises -> Value:
     37     var output = loads("{}")
     38     var assist_runtime = resolve_assisted_runtime_status(runtime_context.config)
     39     var control_routes = List[String]()
     40     control_routes.append("sys.status")
     41     control_routes.append("sys.capabilities")
     42     output.set("control_routes", _string_array(control_routes))
     43 
     44     var capabilities = loads("[]")
     45     for capability in canonical_business_capabilities():
     46         var value = loads("{}")
     47         value.set("id", Value(String(capability.id)))
     48         value.set("kind", Value("business"))
     49         value.set(
     50             "deterministic_execution",
     51             Value("enabled") if capability.deterministic_enabled else Value(
     52                 "disabled"
     53             ),
     54         )
     55         value.set(
     56             "implementation_status",
     57             Value("implemented") if capability.implemented else (
     58                 Value(
     59                     "not_implemented"
     60                 ) if capability.deterministic_enabled else Value("disabled")
     61             ),
     62         )
     63         value.set("callable", Value(capability.callable))
     64         value.set("implemented", Value(capability.implemented))
     65         value.set(
     66             "assisted_execution",
     67             Value(
     68                 assisted_execution_state_for_capability(
     69                     assist_runtime, capability.id
     70                 )
     71             ),
     72         )
     73         value.set(
     74             "assisted_backend_available",
     75             Value(
     76                 assisted_backend_available_for_capability(
     77                     assist_runtime, capability.id
     78                 )
     79             ),
     80         )
     81         if capability.disabled_reason != "":
     82             value.set(
     83                 "disabled_reason", Value(String(capability.disabled_reason))
     84             )
     85         capabilities.append(value)
     86 
     87     output.set("business_capabilities", capabilities)
     88     var assisted_runtime_capabilities = loads("[]")
     89     assisted_runtime_capabilities.append(
     90         serialize_assisted_runtime_status_value(assist_runtime)
     91     )
     92     output.set(
     93         "assisted_runtime_capabilities", assisted_runtime_capabilities.copy()
     94     )
     95     output.set("provider_runtime_capabilities", assisted_runtime_capabilities)
     96     output.set(
     97         "request_context_contract",
     98         build_request_context_contract_value(),
     99     )
    100     return output^