hyf

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

commit 593a74a12f44d1e0f9188e269781bbbf4456a473
parent b735c5353090c32b337d309f9eade01a8a44c630
Author: triesap <tyson@radroots.org>
Date:   Thu, 18 Jun 2026 20:17:56 -0700

provider: remove parser sentinel matching

Diffstat:
Msrc/hyf_provider/result.mojo | 14++++++++------
Mtests/test_provider_adapter.mojo | 33+++++++++++++++++++++++++++++++--
2 files changed, 39 insertions(+), 8 deletions(-)

diff --git a/src/hyf_provider/result.mojo b/src/hyf_provider/result.mojo @@ -128,13 +128,15 @@ def parse_query_analysis_json(value: Value) raises -> QueryAnalysis: raise Error("provider_schema_invalid") +def _load_query_analysis_content_json(text: String) raises -> Value: + try: + return loads(text) + except: + raise Error("provider_invalid_json") + + def parse_query_analysis_from_chat_completion( response: Value, ) raises -> QueryAnalysis: var text = extract_chat_completion_text(response) - try: - return parse_query_analysis_json(loads(text)) - except e: - if String(e).find("provider_schema_invalid") >= 0: - raise Error("provider_schema_invalid") - raise Error("provider_invalid_json") + return parse_query_analysis_json(_load_query_analysis_content_json(text)) diff --git a/tests/test_provider_adapter.mojo b/tests/test_provider_adapter.mojo @@ -76,18 +76,22 @@ def _analysis_json_text() -> String: ) -def _chat_completion_response() raises -> Value: +def _chat_completion_response_with_content(content: String) raises -> Value: var response = loads("{}") var choices = loads("[]") var choice = loads("{}") var message = loads("{}") - message.set("content", Value(_analysis_json_text())) + message.set("content", Value(content)) choice.set("message", message) choices.append(choice) response.set("choices", choices) return response^ +def _chat_completion_response() raises -> Value: + return _chat_completion_response_with_content(_analysis_json_text()) + + def _assert_query_rewrite_failure( message: String, expected_kind: String, expected_reason: String ) raises: @@ -104,6 +108,17 @@ def _assert_health_failure( assert_equal(failure.reason, expected_reason) +def _assert_chat_completion_parse_failure( + response: Value, expected_error: String +) raises: + try: + _ = parse_query_analysis_from_chat_completion(response) + except e: + assert_equal(String(e), expected_error) + return + raise Error("expected chat completion parse failure") + + def test_provider_config_maps_runtime_config() raises: var config = max_local_provider_config_from_runtime( _provider_runtime_config() @@ -243,6 +258,20 @@ def test_chat_completion_response_parses_query_analysis() raises: assert_equal(analysis.extracted_filters.local_intent, True) +def test_chat_completion_response_rejects_invalid_json_content() raises: + _assert_chat_completion_parse_failure( + _chat_completion_response_with_content("not json"), + "provider_invalid_json", + ) + + +def test_chat_completion_response_rejects_schema_invalid_content() raises: + _assert_chat_completion_parse_failure( + _chat_completion_response_with_content('{"original_text":"eggs"}'), + "provider_schema_invalid", + ) + + def test_chat_completion_response_rejects_empty_choices() raises: with assert_raises(): _ = parse_query_analysis_from_chat_completion(loads('{"choices":[]}'))