commit 08b5a2a260747796d08fa4277a761b688bf0da98
parent becd9e6cc6bcab00c1cf5d66409a298897fd522f
Author: triesap <tyson@radroots.org>
Date: Wed, 8 Apr 2026 19:47:01 +0000
core: make assisted requests explicit
Diffstat:
6 files changed, 72 insertions(+), 3 deletions(-)
diff --git a/src/hyf_core/capabilities/explain_result.mojo b/src/hyf_core/capabilities/explain_result.mojo
@@ -15,12 +15,16 @@ from hyf_core.capabilities.ranking_support import (
)
from hyf_core.errors import (
CapabilityResult,
+ backend_unavailable_error,
failed_capability,
invalid_input_error,
successful_capability,
)
from hyf_core.provenance import ProvenanceSourceRef
-from hyf_core.request_context import RequestContext
+from hyf_core.request_context import (
+ RequestContext,
+ assisted_execution_requested,
+)
def _join_reason_summary(reasons: List[String]) -> String:
@@ -87,6 +91,11 @@ def _build_output(
def execute_explain_result(
input: Value, context: RequestContext
) raises -> CapabilityResult:
+ if assisted_execution_requested(context):
+ return failed_capability(
+ backend_unavailable_error("assisted_execution")
+ )
+
try:
var analysis = analyze_query(input, context, "explain_result")
var candidate = parse_single_candidate(input, "explain_result")
diff --git a/src/hyf_core/capabilities/query_rewrite.mojo b/src/hyf_core/capabilities/query_rewrite.mojo
@@ -12,12 +12,16 @@ from hyf_core.capabilities.query_analysis import (
)
from hyf_core.errors import (
CapabilityResult,
+ backend_unavailable_error,
failed_capability,
invalid_input_error,
successful_capability,
)
from hyf_core.provenance import ProvenanceSourceRef
-from hyf_core.request_context import RequestContext
+from hyf_core.request_context import (
+ RequestContext,
+ assisted_execution_requested,
+)
def _build_output(analysis: QueryAnalysis) raises -> Value:
@@ -41,6 +45,11 @@ def _build_output(analysis: QueryAnalysis) raises -> Value:
def execute_query_rewrite(
input: Value, context: RequestContext
) raises -> CapabilityResult:
+ if assisted_execution_requested(context):
+ return failed_capability(
+ backend_unavailable_error("assisted_execution")
+ )
+
try:
var analysis = analyze_query(input, context, "query_rewrite")
diff --git a/src/hyf_core/capabilities/semantic_rank.mojo b/src/hyf_core/capabilities/semantic_rank.mojo
@@ -16,12 +16,16 @@ from hyf_core.capabilities.ranking_support import (
)
from hyf_core.errors import (
CapabilityResult,
+ backend_unavailable_error,
failed_capability,
invalid_input_error,
successful_capability,
)
from hyf_core.provenance import ProvenanceSourceRef
-from hyf_core.request_context import RequestContext
+from hyf_core.request_context import (
+ RequestContext,
+ assisted_execution_requested,
+)
def _build_scored_candidates(
@@ -72,6 +76,11 @@ def _build_output(
def execute_semantic_rank(
input: Value, context: RequestContext
) raises -> CapabilityResult:
+ if assisted_execution_requested(context):
+ return failed_capability(
+ backend_unavailable_error("assisted_execution")
+ )
+
try:
var analysis = analyze_query(input, context, "semantic_rank")
var candidates = parse_candidate_array(input, "semantic_rank")
diff --git a/src/hyf_core/request_context.mojo b/src/hyf_core/request_context.mojo
@@ -105,6 +105,10 @@ def default_request_context() -> RequestContext:
)
+def assisted_execution_requested(context: RequestContext) -> Bool:
+ return context.execution_mode_preference == "assisted"
+
+
def _parse_scope(json: Value) raises -> RequestScope:
_require_object(json, "request context scope")
diff --git a/src/hyf_stdio/control/status.mojo b/src/hyf_stdio/control/status.mojo
@@ -63,6 +63,16 @@ def build_status_output() raises -> Value:
execution_modes.set("assisted", Value(False))
output.set("enabled_execution_modes", execution_modes)
+ var execution_mode_request_behavior = loads("{}")
+ execution_mode_request_behavior.set("deterministic", Value("execute"))
+ execution_mode_request_behavior.set(
+ "assisted", Value("backend_unavailable")
+ )
+ output.set(
+ "execution_mode_request_behavior",
+ execution_mode_request_behavior,
+ )
+
var backends = loads("{}")
backends.set(
"deterministic_backend",
diff --git a/tests/test_hyf.mojo b/tests/test_hyf.mojo
@@ -150,6 +150,14 @@ def test_status_reports_registered_deterministic_ready() raises:
"available",
)
assert_equal(
+ result["output"]["execution_mode_request_behavior"]["deterministic"].string_value(),
+ "execute",
+ )
+ assert_equal(
+ result["output"]["execution_mode_request_behavior"]["assisted"].string_value(),
+ "backend_unavailable",
+ )
+ assert_equal(
Int(
result["output"]["counts"]["deterministic_registered_business_capabilities"].int_value()
),
@@ -286,6 +294,26 @@ def test_semantic_rank_invalid_input_returns_invalid_request() raises:
)
+def test_assisted_request_returns_backend_unavailable() raises:
+ var result = _dispatch(
+ '{"version":1,"request_id":"rewrite-assisted-1","trace_id":"trace-rewrite-assisted-1","capability":"query_rewrite","context":{"execution_mode_preference":"assisted"},"input":{"text":"eggs near me"}}'
+ )
+
+ assert_equal(Int(result["version"].int_value()), 1)
+ assert_equal(result["request_id"].string_value(), "rewrite-assisted-1")
+ assert_equal(
+ result["trace_id"].string_value(), "trace-rewrite-assisted-1"
+ )
+ assert_equal(result["ok"].bool_value(), False)
+ assert_equal(
+ result["error"]["code"].string_value(), "backend_unavailable"
+ )
+ assert_true(
+ result["error"]["message"].string_value().find("assisted_execution")
+ >= 0
+ )
+
+
def test_invalid_request_preserves_request_and_trace_correlation() raises:
var result = _dispatch(
'{"version":2,"request_id":"bad-version-1","trace_id":"trace-bad-version-1","capability":"sys.status","input":{}}'