hyf

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

commit 46cf5906392d873058f27416b72dacfc0b03639c
parent c45c48a7cfca903ea187cf1b57773ae47d54159e
Author: triesap <tyson@radroots.org>
Date:   Sun, 12 Apr 2026 01:06:18 +0000

assist: define fake bridge contract

Diffstat:
Asrc/hyf_assist/__init__.mojo | 1+
Asrc/hyf_assist/bridge.mojo | 88+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Asrc/hyf_assist/contract.mojo | 30++++++++++++++++++++++++++++++
Msrc/hyf_stdio/control/capabilities.mojo | 43++++++++++++++++++++++++++++++++++++++++---
Msrc/hyf_stdio/control/status.mojo | 20++++++++++++++++----
Msrc/hyf_stdio/server.mojo | 17++++++++++++++++-
Mtests/fixtures/v1/scenarios/capabilities_ok.json | 14+++++++++++++-
Mtests/fixtures/v1/scenarios/status_ok.json | 10+++++++++-
Mtests/test_hyf.mojo | 19+++++++++++++++----
Mtests/test_stdio_contract.mojo | 73++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-
10 files changed, 300 insertions(+), 15 deletions(-)

diff --git a/src/hyf_assist/__init__.mojo b/src/hyf_assist/__init__.mojo @@ -0,0 +1 @@ + diff --git a/src/hyf_assist/bridge.mojo b/src/hyf_assist/bridge.mojo @@ -0,0 +1,88 @@ +from mojson import Value, loads + +from hyf_assist.contract import ( + AssistBridgeStatus, + assist_bridge_contract_version, + assist_bridge_runtime_id, + assist_bridge_supported_business_capabilities, +) +from hyf_runtime.config import ( + HyfLoadedRuntimeConfig, + assist_bridge_configured, + assisted_execution_enabled, +) + + +def resolve_assist_bridge_status( + config: HyfLoadedRuntimeConfig, +) -> AssistBridgeStatus: + var configured = assist_bridge_configured(config) + var state = "disabled_by_runtime_config" + if assisted_execution_enabled(config): + state = "unavailable" if configured else "unconfigured" + + return AssistBridgeStatus( + id=assist_bridge_runtime_id(), + kind="assist_bridge", + contract_version=assist_bridge_contract_version(), + transport=String(config.effective.assist.transport), + endpoint=String(config.effective.assist.endpoint), + backend_kind="fake", + configured=configured, + reachable=False, + state=state, + fallback_contract="deterministic_baseline_preserved", + supported_business_capabilities=assist_bridge_supported_business_capabilities(), + ) + + +def assisted_execution_state_for_capability( + bridge_status: AssistBridgeStatus, capability_id: String +) -> String: + if capability_id != "query_rewrite": + return "deferred" + + if bridge_status.state == "disabled_by_runtime_config": + return "disabled_by_runtime_config" + if bridge_status.state == "unconfigured": + return "bridge_unconfigured" + if bridge_status.state == "unavailable": + return "bridge_unavailable" + if bridge_status.reachable: + return "enabled" + return "bridge_unavailable" + + +def assisted_backend_available_for_capability( + bridge_status: AssistBridgeStatus, capability_id: String +) -> Bool: + if not bridge_status.reachable: + return False + for supported in bridge_status.supported_business_capabilities: + if supported == capability_id: + return True + return False + + +def serialize_assist_bridge_status_value( + bridge_status: AssistBridgeStatus, +) raises -> Value: + var value = loads("{}") + value.set("id", Value(String(bridge_status.id))) + value.set("kind", Value(String(bridge_status.kind))) + value.set("contract_version", Value(bridge_status.contract_version)) + value.set("transport", Value(String(bridge_status.transport))) + value.set("endpoint", Value(String(bridge_status.endpoint))) + value.set("backend_kind", Value(String(bridge_status.backend_kind))) + value.set("configured", Value(bridge_status.configured)) + value.set("reachable", Value(bridge_status.reachable)) + value.set("state", Value(String(bridge_status.state))) + value.set( + "fallback_contract", Value(String(bridge_status.fallback_contract)) + ) + + var capabilities = loads("[]") + for capability in bridge_status.supported_business_capabilities: + capabilities.append(Value(String(capability))) + value.set("supported_business_capabilities", capabilities) + return value^ diff --git a/src/hyf_assist/contract.mojo b/src/hyf_assist/contract.mojo @@ -0,0 +1,30 @@ +from std.collections import List + + +def assist_bridge_contract_version() -> Int: + return 1 + + +def assist_bridge_runtime_id() -> String: + return "hyf_assistd" + + +def assist_bridge_supported_business_capabilities() -> List[String]: + var capabilities = List[String]() + capabilities.append("query_rewrite") + return capabilities^ + + +@fieldwise_init +struct AssistBridgeStatus(Copyable, Movable): + var id: String + var kind: String + var contract_version: Int + var transport: String + var endpoint: String + var backend_kind: String + var configured: Bool + var reachable: Bool + var state: String + var fallback_contract: String + var supported_business_capabilities: List[String] diff --git a/src/hyf_stdio/control/capabilities.mojo b/src/hyf_stdio/control/capabilities.mojo @@ -2,7 +2,17 @@ from std.collections import List from mojson import Value, loads +from hyf_assist.bridge import ( + assisted_backend_available_for_capability, + assisted_execution_state_for_capability, + resolve_assist_bridge_status, + serialize_assist_bridge_status_value, +) from hyf_core.capabilities.registry import canonical_business_capabilities +from hyf_runtime.startup import ( + RuntimeStartupContext, + resolve_startup_context_from_process, +) from hyf_stdio.control.request_context_contract import ( build_request_context_contract_value, ) @@ -16,7 +26,16 @@ def _string_array(values: List[String]) raises -> Value: def build_capabilities_output() raises -> Value: + return build_capabilities_output_with_runtime_context( + resolve_startup_context_from_process() + ) + + +def build_capabilities_output_with_runtime_context( + runtime_context: RuntimeStartupContext, +) raises -> Value: var output = loads("{}") + var assist_bridge = resolve_assist_bridge_status(runtime_context.config) var control_routes = List[String]() control_routes.append("sys.status") control_routes.append("sys.capabilities") @@ -47,9 +66,21 @@ def build_capabilities_output() raises -> Value: ) value.set("callable", Value(capability.callable)) value.set("implemented", Value(capability.implemented)) - value.set("assisted_execution", Value("unavailable")) value.set( - "assisted_backend_available", Value(capability.assisted_available) + "assisted_execution", + Value( + assisted_execution_state_for_capability( + assist_bridge, capability.id + ) + ), + ) + value.set( + "assisted_backend_available", + Value( + assisted_backend_available_for_capability( + assist_bridge, capability.id + ) + ), ) if capability.disabled_reason != "": value.set( @@ -58,7 +89,13 @@ def build_capabilities_output() raises -> Value: capabilities.append(value) output.set("business_capabilities", capabilities) - output.set("assisted_backend_capabilities", loads("[]")) + var assisted_backend_capabilities = loads("[]") + assisted_backend_capabilities.append( + serialize_assist_bridge_status_value(assist_bridge) + ) + output.set( + "assisted_backend_capabilities", assisted_backend_capabilities + ) output.set( "request_context_contract", build_request_context_contract_value(), diff --git a/src/hyf_stdio/control/status.mojo b/src/hyf_stdio/control/status.mojo @@ -2,6 +2,10 @@ from std.collections import List from mojson import Value, loads +from hyf_assist.bridge import ( + resolve_assist_bridge_status, + serialize_assist_bridge_status_value, +) from hyf_core.capabilities.registry import ( all_deterministic_capabilities_implemented, bootstrap_capability_count, @@ -64,6 +68,7 @@ def build_status_output_with_runtime_context( var output = loads("{}") var build_identity = _build_identity_value() var assisted_enabled = assisted_execution_enabled(runtime_context.config) + var assist_bridge = resolve_assist_bridge_status(runtime_context.config) output.set("build_identity", build_identity.copy()) output.set("daemon", build_identity["daemon_name"].clone()) output.set("transport", build_identity["transport"].clone()) @@ -86,9 +91,13 @@ def build_status_output_with_runtime_context( execution_mode_request_behavior.set("deterministic", Value("execute")) execution_mode_request_behavior.set( "assisted", - Value("backend_unavailable") - if assisted_enabled - else Value("disabled_by_runtime_config"), + Value("disabled_by_runtime_config") + if assist_bridge.state == "disabled_by_runtime_config" + else ( + Value("bridge_unconfigured") + if assist_bridge.state == "unconfigured" + else Value("bridge_unavailable") + ), ) output.set( "execution_mode_request_behavior", @@ -104,8 +113,11 @@ def build_status_output_with_runtime_context( "partially_available" ), ) - backends.set("assisted_backend", Value("unavailable")) + backends.set("assisted_backend", Value(String(assist_bridge.state))) output.set("backend_reachability", backends) + output.set( + "assist_bridge", serialize_assist_bridge_status_value(assist_bridge) + ) var counts = loads("{}") counts.set( diff --git a/src/hyf_stdio/server.mojo b/src/hyf_stdio/server.mojo @@ -30,7 +30,10 @@ from hyf_stdio.codec import ( encode_success, extract_request_correlation, ) -from hyf_stdio.control.capabilities import build_capabilities_output +from hyf_stdio.control.capabilities import ( + build_capabilities_output, + build_capabilities_output_with_runtime_context, +) from hyf_stdio.control.status import ( build_status_output, build_status_output_with_runtime_context, @@ -283,6 +286,18 @@ def handle_request_with_runtime_context( meta=None, ) ) + if request.capability == "sys.capabilities": + return encode_success( + WireSuccessResponse( + version=hyf_protocol_version(), + request_id=String(request.request_id), + trace_id=request.trace_id, + output=build_capabilities_output_with_runtime_context( + runtime_context + ), + meta=None, + ) + ) return handle_request_with_runtime_context_and_control_builders[ build_status_output, build_capabilities_output ](request, runtime_context) diff --git a/tests/fixtures/v1/scenarios/capabilities_ok.json b/tests/fixtures/v1/scenarios/capabilities_ok.json @@ -22,16 +22,23 @@ "output.business_capabilities.0.deterministic_execution": "enabled", "output.business_capabilities.0.implementation_status": "implemented", "output.business_capabilities.0.callable": true, + "output.business_capabilities.0.assisted_execution": "disabled_by_runtime_config", "output.business_capabilities.1.id": "filter_extraction", "output.business_capabilities.1.deterministic_execution": "disabled", "output.business_capabilities.1.implementation_status": "disabled", "output.business_capabilities.1.callable": false, "output.business_capabilities.1.disabled_reason": "deferred_bootstrap_capability", "output.business_capabilities.2.id": "semantic_rank", + "output.business_capabilities.2.assisted_execution": "deferred", "output.business_capabilities.2.implementation_status": "implemented", "output.business_capabilities.6.id": "explain_result", + "output.business_capabilities.6.assisted_execution": "deferred", "output.business_capabilities.6.implementation_status": "implemented", - "output.assisted_backend_capabilities": [], + "output.assisted_backend_capabilities.0.id": "hyf_assistd", + "output.assisted_backend_capabilities.0.kind": "assist_bridge", + "output.assisted_backend_capabilities.0.contract_version": 1, + "output.assisted_backend_capabilities.0.backend_kind": "fake", + "output.assisted_backend_capabilities.0.state": "disabled_by_runtime_config", "output.request_context_contract.accepted_features": [ "consumer", "execution_mode_preference", @@ -51,6 +58,11 @@ ], "output.request_context_contract.unsupported_field_behavior": "reject" }, + "contains_all": { + "output.assisted_backend_capabilities.0.supported_business_capabilities": [ + "query_rewrite" + ] + }, "absent_paths": [ "error", "meta" diff --git a/tests/fixtures/v1/scenarios/status_ok.json b/tests/fixtures/v1/scenarios/status_ok.json @@ -34,7 +34,12 @@ "output.execution_mode_request_behavior.deterministic": "execute", "output.execution_mode_request_behavior.assisted": "disabled_by_runtime_config", "output.backend_reachability.deterministic_backend": "available", - "output.backend_reachability.assisted_backend": "unavailable", + "output.backend_reachability.assisted_backend": "disabled_by_runtime_config", + "output.assist_bridge.id": "hyf_assistd", + "output.assist_bridge.kind": "assist_bridge", + "output.assist_bridge.contract_version": 1, + "output.assist_bridge.backend_kind": "fake", + "output.assist_bridge.state": "disabled_by_runtime_config", "output.counts.canonical_business_capabilities": 8, "output.counts.deterministic_registered_business_capabilities": 3, "output.counts.deterministic_implemented_business_capabilities": 3, @@ -65,6 +70,9 @@ "semantic_rank", "explain_result" ], + "output.assist_bridge.supported_business_capabilities": [ + "query_rewrite" + ], "output.disabled_capabilities": [ "filter_extraction", "summarize_listing", diff --git a/tests/test_hyf.mojo b/tests/test_hyf.mojo @@ -447,10 +447,7 @@ def test_capabilities_output_reflects_registry_truth_for_all_business_capabiliti assert_equal(entry["id"].string_value(), capability.id) assert_equal(entry["implemented"].bool_value(), capability.implemented) assert_equal(entry["callable"].bool_value(), capability.callable) - assert_equal( - entry["assisted_backend_available"].bool_value(), - capability.assisted_available, - ) + assert_equal(entry["assisted_backend_available"].bool_value(), False) assert_equal( entry["deterministic_execution"].string_value(), "enabled" if capability.deterministic_enabled else "disabled", @@ -469,6 +466,20 @@ def test_capabilities_output_reflects_registry_truth_for_all_business_capabiliti else: assert_true(not _has_key(entry, "disabled_reason")) + assert_equal( + output["assisted_backend_capabilities"][0]["id"].string_value(), + "hyf_assistd", + ) + assert_equal( + output["assisted_backend_capabilities"][0]["state"].string_value(), + "disabled_by_runtime_config", + ) + assert_equal( + output["assisted_backend_capabilities"][0]["backend_kind"] + .string_value(), + "fake", + ) + def test_disabled_capability_returns_capability_disabled() raises: var result = _dispatch( diff --git a/tests/test_stdio_contract.mojo b/tests/test_stdio_contract.mojo @@ -120,6 +120,17 @@ def test_status_reports_repo_local_runtime_truth() raises: False, ) assert_equal( + response["output"]["assist_bridge"]["state"] + .string_value(), + "disabled_by_runtime_config", + ) + assert_equal( + response["output"]["backend_reachability"][ + "assisted_backend" + ].string_value(), + "disabled_by_runtime_config", + ) + assert_equal( response["output"]["runtime"]["paths"][ "diagnostics_dir" ].string_value(), @@ -269,7 +280,18 @@ def test_status_loads_valid_runtime_config_truthfully() raises: response["output"]["execution_mode_request_behavior"][ "assisted" ].string_value(), - "backend_unavailable", + "bridge_unavailable", + ) + assert_equal( + response["output"]["assist_bridge"]["state"] + .string_value(), + "unavailable", + ) + assert_equal( + response["output"]["backend_reachability"][ + "assisted_backend" + ].string_value(), + "unavailable", ) assert_equal( response["output"]["runtime"]["config"][ @@ -368,6 +390,11 @@ def test_status_reports_invalid_runtime_config_without_crashing() raises: "disabled_by_runtime_config", ) assert_equal( + response["output"]["assist_bridge"]["state"] + .string_value(), + "disabled_by_runtime_config", + ) + assert_equal( response["output"]["runtime"]["config"][ "artifact_present" ].bool_value(), @@ -405,6 +432,50 @@ def test_status_reports_invalid_runtime_config_without_crashing() raises: ) +def test_capabilities_reports_configured_fake_bridge_truthfully() raises: + with TemporaryDirectory() as temp_dir: + var startup_config_path = Path(temp_dir) / "explicit-hyf-config.toml" + startup_config_path.write_text( + '[service]\ntransport = "stdio"\n\n' + '[runtime]\ndefault_execution_mode = "deterministic"\nallow_assisted = true\n\n' + '[assist]\nbridge_enabled = true\ntransport = "stdio"\nendpoint = "hyf-assistd://local"\n' + ) + 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/capabilities_ok.json"), + "--config", + startup_config_path.__fspath__(), + ) + + assert_true(response["ok"].bool_value()) + assert_equal( + response["output"]["business_capabilities"][0][ + "assisted_execution" + ].string_value(), + "bridge_unavailable", + ) + assert_equal( + response["output"]["assisted_backend_capabilities"][0][ + "id" + ].string_value(), + "hyf_assistd", + ) + assert_equal( + response["output"]["assisted_backend_capabilities"][0][ + "state" + ].string_value(), + "unavailable", + ) + assert_equal( + response["output"]["assisted_backend_capabilities"][0][ + "backend_kind" + ].string_value(), + "fake", + ) + + def test_status_reports_configured_but_deferred_custody_truthfully() raises: with TemporaryDirectory() as temp_dir: var identity_dir = Path(temp_dir) / "secrets" / "services" / "hyf"