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:
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":{}}'