hyf

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

commit 53027a33a9d94ee7b7d75ba9295d24d1550bdc7f
parent 5b3b5902a81a033345d2dc02d225a7c23586d11a
Author: triesap <tyson@radroots.org>
Date:   Thu,  9 Apr 2026 17:29:21 +0000

runtime: track hyf startup config path

Diffstat:
Msrc/hyf_runtime/startup.mojo | 31++++++++++++++++++++++++++++++-
Msrc/hyf_runtime/status.mojo | 10++++++++++
Mtests/stdio_process_helper.mojo | 26+++++++++++++++++++++++++-
Mtests/test_runtime_paths.mojo | 20++++++++++++++++++++
Mtests/test_stdio_contract.mojo | 21+++++++++++++++++++++
5 files changed, 106 insertions(+), 2 deletions(-)

diff --git a/src/hyf_runtime/startup.mojo b/src/hyf_runtime/startup.mojo @@ -15,6 +15,8 @@ struct RuntimeStartupContext(Copyable, Movable): var paths_profile: String var repo_local_base_root: String var user_home: String + var startup_config_path: String + var startup_config_path_source: String var paths: RuntimePaths @@ -30,6 +32,7 @@ struct RuntimeStartupInput(Copyable, Movable): struct _StartupOverrides(Copyable, Movable): var paths_profile: String var repo_local_base_root: String + var startup_config_path: String def _require_flag_value( @@ -48,7 +51,9 @@ def _require_flag_value( def _parse_startup_overrides(args: List[String]) raises -> _StartupOverrides: - var overrides = _StartupOverrides(paths_profile="", repo_local_base_root="") + var overrides = _StartupOverrides( + paths_profile="", repo_local_base_root="", startup_config_path="" + ) var index = 0 while index < len(args): var arg = String(args[index]) @@ -87,6 +92,22 @@ def _parse_startup_overrides(args: List[String]) raises -> _StartupOverrides: index += 1 continue + if arg == "--config": + overrides.startup_config_path = _require_flag_value( + args, index + 1, "--config" + ) + index += 2 + continue + + if arg.startswith("--config="): + overrides.startup_config_path = String( + arg[byte = len("--config=") :] + ) + if overrides.startup_config_path == "": + raise_runtime_contract_error("--config requires a value") + index += 1 + continue + raise_runtime_contract_error("unknown startup argument '" + arg + "'") return overrides^ @@ -109,10 +130,18 @@ def resolve_startup_context( var paths = hyf_runtime_paths_for_unix_profile( profile, input.user_home, repo_local_base_root ) + var startup_config_path = String(paths.config_path) + var startup_config_path_source = String("canonical_runtime_path") + if overrides.startup_config_path != "": + startup_config_path = String(overrides.startup_config_path) + startup_config_path_source = String("startup_flag") + return RuntimeStartupContext( paths_profile=profile, repo_local_base_root=repo_local_base_root, user_home=String(input.user_home), + startup_config_path=startup_config_path, + startup_config_path_source=startup_config_path_source, paths=paths^, ) diff --git a/src/hyf_runtime/status.mojo b/src/hyf_runtime/status.mojo @@ -27,6 +27,16 @@ def build_runtime_status_value(context: RuntimeStartupContext) raises -> Value: ) status.set("paths", _runtime_paths_status_value(context)) + var config = loads("{}") + config.set("artifact_path", Value(String(context.startup_config_path))) + config.set( + "artifact_path_source", + Value(String(context.startup_config_path_source)), + ) + config.set("loaded", Value(False)) + config.set("compiled_defaults_active", Value(True)) + status.set("config", config) + var secret_storage = loads("{}") secret_storage.set("default_backend", Value("local_file")) secret_storage.set("secret_values_reported", Value(False)) diff --git a/tests/stdio_process_helper.mojo b/tests/stdio_process_helper.mojo @@ -53,6 +53,20 @@ def _read_pipe_to_string(mut pipe: Pipe) raises -> String: def run_stdio_entrypoint( entrypoint: String, request_json: String ) raises -> Value: + return run_stdio_entrypoint_with_2_args(entrypoint, request_json, "", "") + + +def run_stdio_entrypoint( + entrypoint: String, request_json: String, arg0: String, arg1: String +) raises -> Value: + return run_stdio_entrypoint_with_2_args( + entrypoint, request_json, arg0, arg1 + ) + + +def run_stdio_entrypoint_with_2_args( + entrypoint: String, request_json: String, arg0: String, arg1: String +) raises -> Value: var stdin_pipe = Pipe() var stdout_pipe = Pipe() var output = String("") @@ -60,7 +74,9 @@ def run_stdio_entrypoint( var include_flag = String("-I") var include_path = String("src") var entrypoint_path = String(entrypoint) - var argv = List[Optional[CStringSlice[ImmutAnyOrigin]]](length=6, fill={}) + var process_arg0 = String(arg0) + var process_arg1 = String(arg1) + var argv = List[Optional[CStringSlice[ImmutAnyOrigin]]](length=8, fill={}) argv[0] = rebind[CStringSlice[ImmutAnyOrigin]](command.as_c_string_slice()) argv[1] = rebind[CStringSlice[ImmutAnyOrigin]]("run".as_c_string_slice()) argv[2] = rebind[CStringSlice[ImmutAnyOrigin]]( @@ -72,6 +88,14 @@ def run_stdio_entrypoint( argv[4] = rebind[CStringSlice[ImmutAnyOrigin]]( entrypoint_path.as_c_string_slice() ) + if process_arg0 != "": + argv[5] = rebind[CStringSlice[ImmutAnyOrigin]]( + process_arg0.as_c_string_slice() + ) + if process_arg1 != "": + argv[6] = rebind[CStringSlice[ImmutAnyOrigin]]( + process_arg1.as_c_string_slice() + ) var pid = vfork() if pid < 0: diff --git a/tests/test_runtime_paths.mojo b/tests/test_runtime_paths.mojo @@ -119,6 +119,8 @@ def test_startup_context_defaults_from_env_and_home() raises: context.paths.config_path, "/home/hyf-test/.radroots/config/services/hyf/config.toml", ) + assert_equal(context.startup_config_path, context.paths.config_path) + assert_equal(context.startup_config_path_source, "canonical_runtime_path") def test_startup_context_cli_flags_override_env() raises: @@ -142,6 +144,24 @@ def test_startup_context_cli_flags_override_env() raises: ) +def test_startup_context_config_flag_overrides_config_artifact_only() raises: + var context = resolve_startup_context( + RuntimeStartupInput( + env_paths_profile="repo_local", + env_repo_local_base_root="/tmp/hyf-runtime", + user_home="/home/ignored", + argv=_startup_argv2("--config", "/tmp/hyf-config/config.toml"), + ) + ) + + assert_equal( + context.paths.config_path, + "/tmp/hyf-runtime/config/services/hyf/config.toml", + ) + assert_equal(context.startup_config_path, "/tmp/hyf-config/config.toml") + assert_equal(context.startup_config_path_source, "startup_flag") + + def test_startup_context_rejects_missing_root_unknown_flag_and_flag_as_value() raises: with assert_raises(): _ = resolve_startup_context( diff --git a/tests/test_stdio_contract.mojo b/tests/test_stdio_contract.mojo @@ -40,11 +40,14 @@ def test_status_success() raises: def test_status_reports_repo_local_runtime_truth() raises: with TemporaryDirectory() as temp_dir: + var startup_config_path = Path(temp_dir) / "explicit-hyf-config.toml" with ScopedEnvVar(HYF_PATHS_PROFILE_ENV, "repo_local"): with ScopedEnvVar(HYF_PATHS_REPO_LOCAL_ROOT_ENV, temp_dir): var response = run_stdio_entrypoint( "src/main.mojo", load_scenario_request_json("scenarios/status_ok.json"), + "--config", + startup_config_path.__fspath__(), ) assert_equal( @@ -74,6 +77,24 @@ def test_status_reports_repo_local_runtime_truth() raises: temp_dir + "/config/services/hyf/config.toml", ) assert_equal( + response["output"]["runtime"]["config"][ + "artifact_path" + ].string_value(), + startup_config_path.__fspath__(), + ) + assert_equal( + response["output"]["runtime"]["config"][ + "artifact_path_source" + ].string_value(), + "startup_flag", + ) + assert_equal( + response["output"]["runtime"]["config"][ + "compiled_defaults_active" + ].bool_value(), + True, + ) + assert_equal( response["output"]["runtime"]["paths"][ "diagnostics_dir" ].string_value(),