hyf

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

commit 37beac1daf26d1c8952c38ffd189a993894a4c9e
parent 4fe170de7b4ef1fe298f2697c9e9d57ca6600704
Author: triesap <tyson@radroots.org>
Date:   Wed,  8 Apr 2026 20:58:55 +0000

core: source hyf build identity from manifest

Diffstat:
Msrc/hyf_core/metadata.mojo | 74+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++---
Mtests/test_hyf.mojo | 13+++++++++++++
2 files changed, 84 insertions(+), 3 deletions(-)

diff --git a/src/hyf_core/metadata.mojo b/src/hyf_core/metadata.mojo @@ -1,8 +1,17 @@ +from std.pathlib import Path, _dir_of_current_file + + def hyf_protocol_version() -> Int: return 1 @fieldwise_init +struct HyfPackageSurface(Copyable, Movable): + var package_name: String + var package_version: String + + +@fieldwise_init struct HyfBuildIdentity(Copyable, Movable): var service_name: String var package_name: String @@ -15,11 +24,70 @@ struct HyfBuildIdentity(Copyable, Movable): var assisted_execution_available: Bool -def current_build_identity() -> HyfBuildIdentity: +def _package_surface_manifest_path() raises -> Path: + return _dir_of_current_file() / ".." / ".." / "pixi.toml" + + +def _parse_quoted_assignment_value(value: String) raises -> String: + var trimmed_value = value.strip() + if ( + trimmed_value.byte_length() < 2 + or not trimmed_value.startswith("\"") + or not trimmed_value.endswith("\"") + ): + raise Error("manifest assignment value must be a quoted string") + + return String( + trimmed_value[byte=1 : trimmed_value.byte_length() - 1] + ) + + +def current_package_surface() raises -> HyfPackageSurface: + var in_workspace = False + var package_name = String("") + var package_version = String("") + + for raw_line in _package_surface_manifest_path().read_text().splitlines(): + var line = String(raw_line).strip() + if line == "" or line.startswith("#"): + continue + + if line.startswith("["): + in_workspace = line == "[workspace]" + continue + + if not in_workspace: + continue + + var equals_index = line.find("=") + if equals_index < 0: + continue + + var key = String(line[byte=0:equals_index]).strip() + var value = _parse_quoted_assignment_value( + String(line[byte=equals_index + 1 :]) + ) + + if key == "name": + package_name = value^ + elif key == "version": + package_version = value^ + + if package_name != "" and package_version != "": + return HyfPackageSurface( + package_name=package_name^, + package_version=package_version^, + ) + + raise Error("unable to derive hyf package surface from pixi.toml") + + +def current_build_identity() raises -> HyfBuildIdentity: + var package_surface = current_package_surface() return HyfBuildIdentity( service_name="hyf", - package_name="hyf", - package_version="0.1.0", + package_name=package_surface.package_name, + package_version=package_surface.package_version, daemon_name="hyfd", transport="stdio", protocol_version=hyf_protocol_version(), diff --git a/tests/test_hyf.mojo b/tests/test_hyf.mojo @@ -6,6 +6,7 @@ from hyf_core.backends.selector import ( execute_capability as execute_core_capability, resolve_backend, ) +from hyf_core.metadata import current_build_identity, current_package_surface from hyf_core.request_context import default_request_context from hyf_stdio.codec import decode_request, encode_error, encode_success from hyf_stdio.envelope import WireErrorResponse, WireSuccessResponse @@ -131,6 +132,18 @@ def test_handle_request_line_returns_invalid_request_for_bad_line() raises: assert_equal(result["error"]["code"].string_value(), "invalid_request") +def test_current_build_identity_matches_manifest_package_surface() raises: + var package_surface = current_package_surface() + var build_identity = current_build_identity() + + assert_equal(package_surface.package_name, "hyf") + assert_equal(package_surface.package_version, "0.1.0") + assert_equal(build_identity.package_name, package_surface.package_name) + assert_equal( + build_identity.package_version, package_surface.package_version + ) + + def test_status_reports_registered_deterministic_ready() raises: var result = _dispatch( '{"version":1,"request_id":"status-1","trace_id":"trace-status-1","capability":"sys.status","input":{}}'