commit 122c10d1a03848af81fd309a49f21e7dca37aa72
parent 1c47b197e9c53fd0beb193ca220700507cbb44b0
Author: triesap <tyson@radroots.org>
Date: Wed, 8 Apr 2026 17:34:04 +0000
stdio: add truthful hyf control plane
- add core registry metadata for enabled and deferred business capabilities
- add sys.status and sys.capabilities control handlers over stdio
- return capability_disabled for deferred requests and capability_unavailable for first-wave stubs
- verify no-input launch plus piped control-plane and capability responses
Diffstat:
5 files changed, 307 insertions(+), 7 deletions(-)
diff --git a/src/hyf_core/capabilities/registry.mojo b/src/hyf_core/capabilities/registry.mojo
@@ -1,3 +1,130 @@
+from std.collections import List
+
+
+@fieldwise_init
+struct BusinessCapabilityDescriptor(Copyable, Movable):
+ var id: String
+ var mode_a_enabled: Bool
+ var implemented: Bool
+ var callable: Bool
+ var mode_b_available: Bool
+ var disabled_reason: String
+
+
+def canonical_business_capabilities() -> List[BusinessCapabilityDescriptor]:
+ var capabilities = List[BusinessCapabilityDescriptor]()
+ capabilities.append(
+ BusinessCapabilityDescriptor(
+ id="query_rewrite",
+ mode_a_enabled=True,
+ implemented=False,
+ callable=False,
+ mode_b_available=False,
+ disabled_reason="",
+ )
+ )
+ capabilities.append(
+ BusinessCapabilityDescriptor(
+ id="filter_extraction",
+ mode_a_enabled=False,
+ implemented=False,
+ callable=False,
+ mode_b_available=False,
+ disabled_reason="deferred_bootstrap_capability",
+ )
+ )
+ capabilities.append(
+ BusinessCapabilityDescriptor(
+ id="semantic_rank",
+ mode_a_enabled=True,
+ implemented=False,
+ callable=False,
+ mode_b_available=False,
+ disabled_reason="",
+ )
+ )
+ capabilities.append(
+ BusinessCapabilityDescriptor(
+ id="summarize_listing",
+ mode_a_enabled=False,
+ implemented=False,
+ callable=False,
+ mode_b_available=False,
+ disabled_reason="deferred_bootstrap_capability",
+ )
+ )
+ capabilities.append(
+ BusinessCapabilityDescriptor(
+ id="summarize_farm",
+ mode_a_enabled=False,
+ implemented=False,
+ callable=False,
+ mode_b_available=False,
+ disabled_reason="deferred_bootstrap_capability",
+ )
+ )
+ capabilities.append(
+ BusinessCapabilityDescriptor(
+ id="workflow_plan",
+ mode_a_enabled=False,
+ implemented=False,
+ callable=False,
+ mode_b_available=False,
+ disabled_reason="deferred_bootstrap_capability",
+ )
+ )
+ capabilities.append(
+ BusinessCapabilityDescriptor(
+ id="explain_result",
+ mode_a_enabled=True,
+ implemented=False,
+ callable=False,
+ mode_b_available=False,
+ disabled_reason="",
+ )
+ )
+ capabilities.append(
+ BusinessCapabilityDescriptor(
+ id="dedupe_cluster",
+ mode_a_enabled=False,
+ implemented=False,
+ callable=False,
+ mode_b_available=False,
+ disabled_reason="deferred_bootstrap_capability",
+ )
+ )
+ return capabilities^
+
+
def bootstrap_capability_count() -> Int:
- return 0
+ return len(canonical_business_capabilities())
+
+
+def bootstrap_enabled_capabilities() -> List[String]:
+ var enabled = List[String]()
+ for capability in canonical_business_capabilities():
+ if capability.mode_a_enabled:
+ enabled.append(String(capability.id))
+ return enabled^
+
+
+def deferred_capabilities() -> List[String]:
+ var disabled = List[String]()
+ for capability in canonical_business_capabilities():
+ if not capability.mode_a_enabled:
+ disabled.append(String(capability.id))
+ return disabled^
+
+
+def is_known_business_capability(capability_id: String) -> Bool:
+ for capability in canonical_business_capabilities():
+ if capability.id == capability_id:
+ return True
+ return False
+
+def is_deferred_capability(capability_id: String) -> Bool:
+ for capability in canonical_business_capabilities():
+ if capability.id == capability_id:
+ return not capability.mode_a_enabled
+ return False
diff --git a/src/hyf_stdio/control/capabilities.mojo b/src/hyf_stdio/control/capabilities.mojo
@@ -0,0 +1,52 @@
+from std.collections import List
+
+from mojson import Value, loads
+
+from hyf_core.capabilities.registry import canonical_business_capabilities
+
+
+def _string_array(values: List[String]) raises -> Value:
+ var array = loads("[]")
+ for value in values:
+ array.append(Value(String(value)))
+ return array^
+
+
+def build_capabilities_output() raises -> Value:
+ var output = loads("{}")
+ var control_routes = List[String]()
+ control_routes.append("sys.status")
+ control_routes.append("sys.capabilities")
+ output.set(
+ "control_routes", _string_array(control_routes)
+ )
+
+ var capabilities = loads("[]")
+ for capability in canonical_business_capabilities():
+ var value = loads("{}")
+ value.set("id", Value(String(capability.id)))
+ value.set("kind", Value("business"))
+ value.set(
+ "mode_a",
+ Value("enabled") if capability.mode_a_enabled else Value("disabled"),
+ )
+ value.set(
+ "implementation_status",
+ Value("not_implemented")
+ if capability.mode_a_enabled
+ else Value("disabled"),
+ )
+ value.set("callable", Value(capability.callable))
+ value.set("implemented", Value(capability.implemented))
+ value.set("mode_b", Value("unavailable"))
+ value.set("backend_assisted", Value(capability.mode_b_available))
+ if capability.disabled_reason != "":
+ value.set(
+ "disabled_reason", Value(String(capability.disabled_reason))
+ )
+ capabilities.append(value)
+
+ output.set("business_capabilities", capabilities)
+ output.set("backend_assisted_capabilities", loads("[]"))
+ output.set("request_context_features", loads("[]"))
+ return output^
diff --git a/src/hyf_stdio/control/status.mojo b/src/hyf_stdio/control/status.mojo
@@ -0,0 +1,58 @@
+from std.collections import List
+
+from mojson import Value, loads
+
+from hyf_core.capabilities.registry import (
+ bootstrap_capability_count,
+ bootstrap_enabled_capabilities,
+ deferred_capabilities,
+)
+
+
+def _string_array(values: List[String]) raises -> Value:
+ var array = loads("[]")
+ for value in values:
+ array.append(Value(String(value)))
+ return array^
+
+
+def build_status_output() raises -> Value:
+ var output = loads("{}")
+ output.set("daemon", Value("hyfd"))
+ output.set("transport", Value("stdio"))
+ output.set("request_framing", Value("newline_delimited_json"))
+ output.set("implementation_status", Value("bootstrap_control_plane_only"))
+
+ var modes = loads("{}")
+ modes.set("a", Value(True))
+ modes.set("b", Value(False))
+ output.set("enabled_modes", modes)
+
+ var backends = loads("{}")
+ backends.set("mode_a_deterministic", Value("not_implemented"))
+ backends.set("mode_b_model_assisted", Value("unavailable"))
+ output.set("backend_reachability", backends)
+
+ var counts = loads("{}")
+ counts.set("canonical_business_capabilities", Value(bootstrap_capability_count()))
+ counts.set(
+ "mode_a_registered_business_capabilities",
+ Value(len(bootstrap_enabled_capabilities())),
+ )
+ counts.set(
+ "disabled_business_capabilities",
+ Value(len(deferred_capabilities())),
+ )
+ output.set("counts", counts)
+
+ output.set(
+ "mode_a_registered_capabilities", _string_array(bootstrap_enabled_capabilities())
+ )
+ output.set("disabled_capabilities", _string_array(deferred_capabilities()))
+
+ var limits = loads("{}")
+ limits.set("max_requests_per_process", Value(1))
+ limits.set("request_context_features", loads("[]"))
+ output.set("limits", limits)
+
+ return output^
diff --git a/src/hyf_stdio/errors.mojo b/src/hyf_stdio/errors.mojo
@@ -24,5 +24,19 @@ def unsupported_capability_error(capability: String) -> WireError:
)
+def capability_disabled_error(capability: String) -> WireError:
+ return WireError(
+ code="capability_disabled",
+ message="bootstrap deferred capability '" + capability + "' is disabled",
+ )
+
+
+def capability_unavailable_error(capability: String) -> WireError:
+ return WireError(
+ code="capability_unavailable",
+ message="bootstrap capability '" + capability + "' is not implemented yet",
+ )
+
+
def internal_error(message: String) -> WireError:
return WireError(code="internal_error", message=message)
diff --git a/src/hyf_stdio/server.mojo b/src/hyf_stdio/server.mojo
@@ -1,9 +1,21 @@
from std.io.io import _fdopen
from std.sys import stdin
-from hyf_stdio.codec import decode_request, encode_error
-from hyf_stdio.envelope import WireErrorResponse, WireRequest
+from hyf_core.capabilities.registry import (
+ is_deferred_capability,
+ is_known_business_capability,
+)
+from hyf_stdio.codec import decode_request, encode_error, encode_success
+from hyf_stdio.control.capabilities import build_capabilities_output
+from hyf_stdio.control.status import build_status_output
+from hyf_stdio.envelope import (
+ WireErrorResponse,
+ WireRequest,
+ WireSuccessResponse,
+)
from hyf_stdio.errors import (
+ capability_disabled_error,
+ capability_unavailable_error,
internal_error,
invalid_request_error,
unsupported_capability_error,
@@ -22,10 +34,28 @@ def _unsupported_response(request: WireRequest) -> WireErrorResponse:
)
-def _write_response(response: WireErrorResponse) raises:
+def _disabled_response(request: WireRequest) -> WireErrorResponse:
+ return WireErrorResponse(
+ request_id=String(request.request_id),
+ error=capability_disabled_error(String(request.capability)),
+ )
+
+
+def _unavailable_response(request: WireRequest) -> WireErrorResponse:
+ return WireErrorResponse(
+ request_id=String(request.request_id),
+ error=capability_unavailable_error(String(request.capability)),
+ )
+
+
+def _write_error(response: WireErrorResponse) raises:
print(encode_error(response))
+def _write_success(response: WireSuccessResponse) raises:
+ print(encode_success(response))
+
+
def run_stdio_server() raises:
if stdin.isatty():
return
@@ -38,16 +68,35 @@ def run_stdio_server() raises:
var request_id = String(request.request_id)
try:
- _write_response(_unsupported_response(request))
+ if request.capability == "sys.status":
+ _write_success(
+ WireSuccessResponse(
+ request_id=request_id,
+ output=build_status_output(),
+ )
+ )
+ elif request.capability == "sys.capabilities":
+ _write_success(
+ WireSuccessResponse(
+ request_id=request_id,
+ output=build_capabilities_output(),
+ )
+ )
+ elif is_deferred_capability(request.capability):
+ _write_error(_disabled_response(request))
+ elif is_known_business_capability(request.capability):
+ _write_error(_unavailable_response(request))
+ else:
+ _write_error(_unsupported_response(request))
except e:
- _write_response(
+ _write_error(
WireErrorResponse(
request_id=request_id,
error=internal_error(String(e)),
)
)
except e:
- _write_response(
+ _write_error(
WireErrorResponse(
request_id="",
error=invalid_request_error(String(e)),