commit 420f0dbbd7e83982a9c6c94d778d60e9cc2523ac
parent ea61c8fc5a24bf18984e6f1aca110ea447944370
Author: triesap <tyson@radroots.org>
Date: Wed, 8 Apr 2026 19:34:13 +0000
core: add hyf build identity surface
Diffstat:
3 files changed, 82 insertions(+), 2 deletions(-)
diff --git a/src/hyf_core/metadata.mojo b/src/hyf_core/metadata.mojo
@@ -0,0 +1,25 @@
+@fieldwise_init
+struct HyfBuildIdentity(Copyable, Movable):
+ var service_name: String
+ var package_name: String
+ var package_version: String
+ var daemon_name: String
+ var transport: String
+ var protocol_version: Int
+ var default_execution_mode: String
+ var deterministic_execution_available: Bool
+ var assisted_execution_available: Bool
+
+
+def current_build_identity() -> HyfBuildIdentity:
+ return HyfBuildIdentity(
+ service_name="hyf",
+ package_name="hyf",
+ package_version="0.1.0",
+ daemon_name="hyfd",
+ transport="stdio",
+ protocol_version=1,
+ default_execution_mode="deterministic",
+ deterministic_execution_available=True,
+ assisted_execution_available=False,
+ )
diff --git a/src/hyf_stdio/control/status.mojo b/src/hyf_stdio/control/status.mojo
@@ -9,6 +9,7 @@ from hyf_core.capabilities.registry import (
deferred_capabilities,
implemented_deterministic_capability_count,
)
+from hyf_core.metadata import current_build_identity
from hyf_core.request_context import request_context_feature_names
@@ -19,10 +20,36 @@ def _string_array(values: List[String]) raises -> Value:
return array^
+def _build_identity_value() raises -> Value:
+ var build_identity = current_build_identity()
+ var value = loads("{}")
+ value.set("service_name", Value(String(build_identity.service_name)))
+ value.set("package_name", Value(String(build_identity.package_name)))
+ value.set("package_version", Value(String(build_identity.package_version)))
+ value.set("daemon_name", Value(String(build_identity.daemon_name)))
+ value.set("transport", Value(String(build_identity.transport)))
+ value.set("protocol_version", Value(build_identity.protocol_version))
+ value.set(
+ "default_execution_mode",
+ Value(String(build_identity.default_execution_mode)),
+ )
+ value.set(
+ "deterministic_execution_available",
+ Value(build_identity.deterministic_execution_available),
+ )
+ value.set(
+ "assisted_execution_available",
+ Value(build_identity.assisted_execution_available),
+ )
+ return value^
+
+
def build_status_output() raises -> Value:
var output = loads("{}")
- output.set("daemon", Value("hyfd"))
- output.set("transport", Value("stdio"))
+ var build_identity = _build_identity_value()
+ output.set("build_identity", build_identity.copy())
+ output.set("daemon", build_identity["daemon_name"].clone())
+ output.set("transport", build_identity["transport"].clone())
output.set("request_framing", Value("newline_delimited_json"))
output.set(
"implementation_status",
diff --git a/tests/test_hyf.mojo b/tests/test_hyf.mojo
@@ -93,6 +93,34 @@ def test_status_reports_registered_deterministic_ready() raises:
assert_equal(result["ok"].bool_value(), True)
assert_equal(
+ result["output"]["build_identity"]["service_name"].string_value(),
+ "hyf",
+ )
+ assert_equal(
+ result["output"]["build_identity"]["package_name"].string_value(),
+ "hyf",
+ )
+ assert_equal(
+ result["output"]["build_identity"]["package_version"].string_value(),
+ "0.1.0",
+ )
+ assert_equal(
+ result["output"]["build_identity"]["protocol_version"].int_value(),
+ 1,
+ )
+ assert_equal(
+ result["output"]["build_identity"]["default_execution_mode"].string_value(),
+ "deterministic",
+ )
+ assert_equal(
+ result["output"]["build_identity"]["deterministic_execution_available"].bool_value(),
+ True,
+ )
+ assert_equal(
+ result["output"]["build_identity"]["assisted_execution_available"].bool_value(),
+ False,
+ )
+ assert_equal(
result["output"]["implementation_status"].string_value(),
"bootstrap_registered_deterministic_ready",
)