hyf

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

commit e27c02a3c5eca01956f1264dcf39a53a943799e7
parent b3040f37f2a952becc32f84ebfe0f89a6ac67288
Author: triesap <tyson@radroots.org>
Date:   Mon, 21 Sep 2026 13:47:59 +0000

runtime: add runtime composition for jev

Diffstat:
Asrc/hyf_runtime/jev_composition.mojo | 55+++++++++++++++++++++++++++++++++++++++++++++++++++++++
Mtests/test_runtime_paths.mojo | 13+++++++++++++
2 files changed, 68 insertions(+), 0 deletions(-)

diff --git a/src/hyf_runtime/jev_composition.mojo b/src/hyf_runtime/jev_composition.mojo @@ -0,0 +1,55 @@ +from std.os import getenv + +from hyf_runtime.config import ( + HyfLoadedRuntimeConfig, + assisted_execution_enabled, + provider_disabled, + typesafe_provider_configured, +) + + +@fieldwise_init +struct JevComposition(Copyable, Movable): + var usable: Bool + var base_url: String + var model: String + var request_timeout_ms: Int + var reason: String + + +def typesafe_api_key_present() -> Bool: + return getenv("TYPESAFE_API_KEY", "") != "" + + +def compose_jev(config: HyfLoadedRuntimeConfig) raises -> JevComposition: + var typesafe = config.effective.assisted.typesafe.copy() + if provider_disabled(config): + return JevComposition( + usable=False, base_url="", model="", request_timeout_ms=0, + reason="provider_disabled", + ) + if not assisted_execution_enabled(config): + return JevComposition( + usable=False, base_url="", model="", request_timeout_ms=0, + reason="disabled_by_runtime_config", + ) + if not typesafe_provider_configured(config): + return JevComposition( + usable=False, base_url="", model="", request_timeout_ms=0, + reason="provider_unconfigured", + ) + if not typesafe_api_key_present(): + return JevComposition( + usable=False, + base_url=String(typesafe.base_url), + model=String(typesafe.model), + request_timeout_ms=typesafe.request_timeout_ms, + reason="missing_credentials", + ) + return JevComposition( + usable=True, + base_url=String(typesafe.base_url), + model=String(typesafe.model), + request_timeout_ms=typesafe.request_timeout_ms, + reason="ready", + ) diff --git a/tests/test_runtime_paths.mojo b/tests/test_runtime_paths.mojo @@ -292,3 +292,16 @@ def test_shared_budget_does_not_reset_per_stage() raises: assert_true(budget_exhausted(value, 600_000_000)) var capped = budget_from_clock(5000, 2000, 0) assert_equal(capped.cap_ms, 2000) + + +from hyf_runtime.jev_composition import compose_jev + + +def test_jev_runtime_composition_reasons() raises: + var disabled = default_loaded_runtime_config() + assert_equal(compose_jev(disabled).reason, "disabled_by_runtime_config") + var configured = _typesafe_config(True, "https://api.typesafe.ai") + var composition = compose_jev(configured) + assert_true(not composition.usable) + assert_equal(composition.reason, "missing_credentials") + assert_equal(composition.model, "jev-1.13.0")