hyf

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

commit 64911e6aee9c8451eb8df843f0a13cb8a9950997
parent 1f3dac0bc20f065317fe5a49c9e2b237cd33c3c8
Author: triesap <tyson@radroots.org>
Date:   Mon, 21 Sep 2026 13:41:45 +0000

core: separate capability support and permission

Diffstat:
Msrc/hyf_core/capabilities/registry.mojo | 36++++++++++++++++++++++++++++++++++++
Mtests/test_hyf.mojo | 19+++++++++++++++++++
2 files changed, 55 insertions(+), 0 deletions(-)

diff --git a/src/hyf_core/capabilities/registry.mojo b/src/hyf_core/capabilities/registry.mojo @@ -192,3 +192,39 @@ def execute_registered_business_capability( ) return failed_capability(capability_not_implemented_error(capability_id)) + + +@fieldwise_init +struct CapabilityExposure(Copyable, Movable): + var capability_id: String + var implementation_supported: Bool + var provider_configured: Bool + var assistance_permitted: Bool + var provider_ready: Bool + var exposed: Bool + + +def capability_assisted_supported(capability_id: String) -> Bool: + return capability_id == "query_rewrite" + + +def capability_exposure( + capability_id: String, + provider_configured: Bool, + assistance_permitted: Bool, + provider_ready: Bool, +) -> CapabilityExposure: + var supported = capability_assisted_supported(capability_id) + return CapabilityExposure( + capability_id=String(capability_id), + implementation_supported=supported, + provider_configured=provider_configured, + assistance_permitted=assistance_permitted, + provider_ready=provider_ready, + exposed=( + supported + and provider_configured + and assistance_permitted + and provider_ready + ), + ) diff --git a/tests/test_hyf.mojo b/tests/test_hyf.mojo @@ -1331,3 +1331,22 @@ def test_projection_assertions_enforce_exactness_and_reject_unknown_operators() def main() raises: TestSuite.discover_tests[__functions_in_module()]().run() + + +from hyf_core.capabilities.registry import ( + capability_assisted_supported, + capability_exposure, +) + + +def test_capability_exposure_separates_support_permission_readiness() raises: + assert_true(capability_assisted_supported("query_rewrite")) + assert_true(not capability_assisted_supported("semantic_rank")) + var supported_but_blocked = capability_exposure("query_rewrite", False, True, False) + assert_true(supported_but_blocked.implementation_supported) + assert_true(not supported_but_blocked.provider_configured) + assert_true(not supported_but_blocked.exposed) + var fully_ready = capability_exposure("query_rewrite", True, True, True) + assert_true(fully_ready.exposed) + var permission_denied = capability_exposure("query_rewrite", True, False, True) + assert_true(not permission_denied.exposed)