hyf

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

jev_composition.mojo (1810B)


      1 from std.os import getenv
      2 
      3 from hyf_runtime.config import (
      4     HyfLoadedRuntimeConfig,
      5     assisted_execution_enabled,
      6     provider_disabled,
      7     typesafe_provider_configured,
      8 )
      9 
     10 
     11 @fieldwise_init
     12 struct JevComposition(Copyable, Movable):
     13     var usable: Bool
     14     var base_url: String
     15     var model: String
     16     var request_timeout_ms: Int
     17     var reason: String
     18 
     19 
     20 def typesafe_api_key_present() -> Bool:
     21     return getenv("TYPESAFE_API_KEY", "") != ""
     22 
     23 
     24 def compose_jev(config: HyfLoadedRuntimeConfig) raises -> JevComposition:
     25     var typesafe = config.effective.assisted.typesafe.copy()
     26     if provider_disabled(config):
     27         return JevComposition(
     28             usable=False,
     29             base_url="",
     30             model="",
     31             request_timeout_ms=0,
     32             reason="provider_disabled",
     33         )
     34     if not assisted_execution_enabled(config):
     35         return JevComposition(
     36             usable=False,
     37             base_url="",
     38             model="",
     39             request_timeout_ms=0,
     40             reason="disabled_by_runtime_config",
     41         )
     42     if not typesafe_provider_configured(config):
     43         return JevComposition(
     44             usable=False,
     45             base_url="",
     46             model="",
     47             request_timeout_ms=0,
     48             reason="provider_unconfigured",
     49         )
     50     if not typesafe_api_key_present():
     51         return JevComposition(
     52             usable=False,
     53             base_url=String(typesafe.base_url),
     54             model=String(typesafe.model),
     55             request_timeout_ms=typesafe.request_timeout_ms,
     56             reason="missing_credentials",
     57         )
     58     return JevComposition(
     59         usable=True,
     60         base_url=String(typesafe.base_url),
     61         model=String(typesafe.model),
     62         request_timeout_ms=typesafe.request_timeout_ms,
     63         reason="ready",
     64     )