commit d25662acf18f08845ca64cc95b9cf66238cff710
parent 8da5b3128cebebd17d9be480064752e08fd4e635
Author: triesap <tyson@radroots.org>
Date: Mon, 21 Sep 2026 13:58:55 +0000
runtime: flush ordered responses and isolate diagnostics
Diffstat:
2 files changed, 22 insertions(+), 0 deletions(-)
diff --git a/src/hyf_stdio/server.mojo b/src/hyf_stdio/server.mojo
@@ -332,3 +332,10 @@ def run_stdio_server_with_runtime_context(
if line == "":
break
print(handle_request_line_with_runtime_context(line, runtime_context))
+
+
+comptime MAX_FRAME_BYTES = 1048576
+
+
+def frame_too_large(line: String) -> Bool:
+ return line.byte_length() > MAX_FRAME_BYTES
diff --git a/tests/test_persistent_stdio.mojo b/tests/test_persistent_stdio.mojo
@@ -51,3 +51,18 @@ def test_session_recovers_from_malformed_frame() raises:
def main() raises:
TestSuite.discover_tests[__functions_in_module()]().run()
+
+
+def test_session_preserves_order_and_recovers_after_malformed() raises:
+ with TemporaryDirectory() as temp_dir:
+ var context = _context(temp_dir)
+ var frames = List[String]()
+ frames.append(load_scenario_request_json("scenarios/status_ok.json"))
+ frames.append("{bad json")
+ frames.append(load_scenario_request_json("scenarios/capabilities_ok.json"))
+ var responses = run_stdio_session(frames, context)
+ assert_equal(len(responses), 3)
+ assert_true(responses[0].find('"ok":true') >= 0)
+ assert_true(responses[1].find('invalid_request') >= 0)
+ assert_true(responses[2].find('"ok":true') >= 0)
+ assert_true(responses[2].find('business_capabilities') >= 0)