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 )