commit 1c54d4f169b6a9c7d425b9c3b72fce2b1f3bdb54
parent a09be2b0d1e862d276eec5158572f96be42bd635
Author: triesap <tyson@radroots.org>
Date: Sun, 14 Jun 2026 16:15:40 -0700
runtime: dispatch assisted provider execution
Route stdio business requests through a runtime-aware execution layer so assisted query_rewrite can call the configured max_local provider after readiness checks. Keep hyf_core deterministic and runtime-agnostic by exposing only generic query rewrite output and fallback metadata builders.
Diffstat:
3 files changed, 229 insertions(+), 9 deletions(-)
diff --git a/src/hyf_core/capabilities/query_rewrite.mojo b/src/hyf_core/capabilities/query_rewrite.mojo
@@ -27,7 +27,7 @@ from hyf_core.provenance import (
from hyf_core.request_context import RequestContext, assisted_execution_requested
-def _build_output(analysis: QueryAnalysis) raises -> Value:
+def build_query_rewrite_output(analysis: QueryAnalysis) raises -> Value:
var output = loads("{}")
output.set("original_text", Value(String(analysis.original_text)))
output.set("normalized_text", Value(String(analysis.normalized_text)))
@@ -65,7 +65,7 @@ def _base_source_refs(
return source_refs^
-def _build_deterministic_fallback_meta(
+def build_query_rewrite_deterministic_fallback_meta(
context: RequestContext,
analysis: QueryAnalysis,
fallback_kind: String,
@@ -104,8 +104,8 @@ def execute_query_rewrite(
var analysis = analyze_query_text(request.text, context)
if assisted_execution_requested(context):
return successful_capability(
- _build_output(analysis),
- meta=_build_deterministic_fallback_meta(
+ build_query_rewrite_output(analysis),
+ meta=build_query_rewrite_deterministic_fallback_meta(
context,
analysis,
"assisted_execution",
@@ -115,7 +115,7 @@ def execute_query_rewrite(
var source_refs = List[ProvenanceSourceRef]()
return successful_capability(
- _build_output(analysis),
+ build_query_rewrite_output(analysis),
meta=build_deterministic_meta(
context=context,
capability_name="query_rewrite",
diff --git a/src/hyf_stdio/provider_execution.mojo b/src/hyf_stdio/provider_execution.mojo
@@ -0,0 +1,219 @@
+from std.collections import List, Optional
+
+from json import Value
+
+from hyf_core.backends.selector import (
+ execute_capability as execute_backend_capability,
+)
+from hyf_core.capabilities.query_analysis import (
+ QueryAnalysis,
+ analyze_query_text,
+ parse_query_rewrite_request,
+ query_signal_tags,
+)
+from hyf_core.capabilities.query_rewrite import (
+ build_query_rewrite_deterministic_fallback_meta,
+ build_query_rewrite_output,
+)
+from hyf_core.errors import (
+ CapabilityResult,
+ failed_capability,
+ invalid_input_error,
+ successful_capability,
+)
+from hyf_core.provenance import (
+ CoreResponseMeta,
+ ExecutionProvenance,
+ ProvenanceSourceRef,
+)
+from hyf_core.request_context import (
+ RequestContext,
+ assisted_execution_requested,
+)
+from hyf_provider.config import (
+ MaxLocalProviderConfig,
+ max_local_provider_config_from_runtime,
+)
+from hyf_provider.max_local import (
+ MaxLocalQueryRewriteResult,
+ execute_query_rewrite_via_max_local_provider,
+ max_local_provider_status,
+)
+from hyf_runtime.startup import RuntimeStartupContext
+from hyf_stdio.control.assisted_runtime import resolve_assisted_runtime_status
+
+
+def _source_refs(
+ context: RequestContext, capability_name: String
+) -> List[ProvenanceSourceRef]:
+ var source_refs = List[ProvenanceSourceRef]()
+ source_refs.append(
+ ProvenanceSourceRef(
+ source_kind="local_input",
+ source_ref=capability_name + ":input",
+ )
+ )
+ if context.scope:
+ source_refs.append(
+ ProvenanceSourceRef(
+ source_kind="request_scope",
+ source_ref="request_context.scope",
+ )
+ )
+ return source_refs^
+
+
+def _provider_meta(
+ context: RequestContext, result: MaxLocalQueryRewriteResult
+) -> CoreResponseMeta:
+ var provenance: Optional[ExecutionProvenance] = None
+ if context.return_provenance:
+ provenance = ExecutionProvenance(
+ kind="assisted",
+ signal_tags=query_signal_tags(result.analysis),
+ source_refs=_source_refs(context, "query_rewrite"),
+ fallback=None,
+ evidence_set_id=None,
+ )
+
+ return CoreResponseMeta(
+ execution_mode="assisted",
+ backend="provider_runtime",
+ provider=Optional[String](String(result.provider)),
+ route=Optional[String](String(result.route)),
+ model=Optional[String](String(result.model)),
+ latency_ms=Optional[Int](result.latency_ms),
+ schema_version=Optional[Int](result.schema_version),
+ prompt_version=Optional[String](String(result.prompt_version)),
+ provenance=provenance^,
+ )
+
+
+def _fallback_reason_for_runtime_state(state: String) -> String:
+ if state == "disabled_by_runtime_config":
+ return "disabled_by_runtime_config"
+ if state == "unconfigured":
+ return "provider_unconfigured"
+ if state == "invalid_config":
+ return "invalid_config"
+ if state == "degraded":
+ return "provider_degraded"
+ return "provider_unavailable"
+
+
+def _provider_execution_error_reason(message: String) -> String:
+ var lower = message.lower()
+ if lower.find("http") >= 0:
+ return "provider_non_2xx"
+ if lower.find("choices") >= 0:
+ return "provider_empty_choices"
+ if lower.find("content") >= 0 or lower.find("message") >= 0:
+ return "provider_missing_content"
+ if lower.find("json") >= 0 or lower.find("parse") >= 0:
+ return "provider_invalid_json"
+ if lower.find("schema") >= 0 or lower.find("required") >= 0:
+ return "provider_schema_invalid"
+ return "provider_error"
+
+
+def _max_local_config_for_request(
+ runtime_context: RuntimeStartupContext, context: RequestContext
+) raises -> MaxLocalProviderConfig:
+ var config = max_local_provider_config_from_runtime(
+ runtime_context.config
+ )
+ if (
+ context.deadline_ms > 0
+ and config.request_timeout_ms > context.deadline_ms
+ ):
+ config.request_timeout_ms = context.deadline_ms
+ return config^
+
+
+def _query_rewrite_fallback(
+ input: Value,
+ context: RequestContext,
+ fallback_kind: String,
+ reason: String,
+) raises -> CapabilityResult:
+ try:
+ var request = parse_query_rewrite_request(input)
+ var analysis = analyze_query_text(request.text, context)
+ return successful_capability(
+ build_query_rewrite_output(analysis),
+ meta=build_query_rewrite_deterministic_fallback_meta(
+ context,
+ analysis,
+ fallback_kind,
+ reason,
+ ),
+ )
+ except e:
+ return failed_capability(invalid_input_error(String(e)))
+
+
+def _execute_query_rewrite_with_provider(
+ input: Value,
+ context: RequestContext,
+ runtime_context: RuntimeStartupContext,
+) raises -> CapabilityResult:
+ var runtime_status = resolve_assisted_runtime_status(
+ runtime_context.config
+ )
+ if runtime_status.state == "disabled_by_runtime_config":
+ return _query_rewrite_fallback(
+ input,
+ context,
+ "provider_runtime",
+ _fallback_reason_for_runtime_state(runtime_status.state),
+ )
+
+ try:
+ var provider_config = _max_local_config_for_request(
+ runtime_context, context
+ )
+ var provider_status = max_local_provider_status(provider_config)
+ if provider_status.state != "ready":
+ return _query_rewrite_fallback(
+ input,
+ context,
+ "provider_runtime",
+ String(provider_status.reason),
+ )
+
+ var request = parse_query_rewrite_request(input)
+ var result = execute_query_rewrite_via_max_local_provider(
+ provider_config, request.text, context
+ )
+ return successful_capability(
+ build_query_rewrite_output(result.analysis),
+ meta=_provider_meta(context, result),
+ )
+ except e:
+ return _query_rewrite_fallback(
+ input,
+ context,
+ "provider_runtime",
+ _provider_execution_error_reason(String(e)),
+ )
+
+
+def execute_runtime_aware_business_capability(
+ capability_id: String,
+ input: Value,
+ context: RequestContext,
+ runtime_context: RuntimeStartupContext,
+) raises -> CapabilityResult:
+ if not assisted_execution_requested(context):
+ return execute_backend_capability(capability_id, input, context)
+
+ if capability_id == "query_rewrite":
+ return _execute_query_rewrite_with_provider(
+ input, context, runtime_context
+ )
+
+ var deterministic_context = context.copy()
+ deterministic_context.execution_mode_preference = "deterministic"
+ return execute_backend_capability(
+ capability_id, input, deterministic_context
+ )
diff --git a/src/hyf_stdio/server.mojo b/src/hyf_stdio/server.mojo
@@ -12,9 +12,6 @@ from hyf_runtime.startup import (
RuntimeStartupContext,
resolve_startup_context_from_process,
)
-from hyf_core.backends.selector import (
- execute_capability as execute_backend_capability,
-)
from hyf_core.capabilities.registry import (
canonical_business_capability,
)
@@ -50,6 +47,9 @@ from hyf_stdio.errors import (
unsupported_capability_error,
)
from hyf_stdio.meta import serialize_core_response_meta
+from hyf_stdio.provider_execution import (
+ execute_runtime_aware_business_capability,
+)
def _read_request_line() raises -> String:
@@ -179,10 +179,11 @@ def _dispatch_business_capability(
request_id: String,
runtime_context: RuntimeStartupContext,
) raises -> String:
- var result = execute_backend_capability(
+ var result = execute_runtime_aware_business_capability(
request.capability,
request.input.clone(),
request.context.copy(),
+ runtime_context,
)
return _dispatch_capability_result(request_id, request.trace_id, result)