fix: expose run step identities across transports

This commit is contained in:
lda
2026-09-05 23:40:25 +07:00 Verified
parent fd48a67819
commit 0612247f56
13 changed files with 97 additions and 0 deletions
+2
View File
@@ -163,6 +163,7 @@ def test_decode_trace_result_decodes_bounded_trace() -> None:
"frame_id": "root",
"node_id": "constant",
"step_type": "node",
"step_number": 1,
"resolved_input": {},
"outcome": "ok",
"next_node_id": "__end__",
@@ -176,3 +177,4 @@ def test_decode_trace_result_decodes_bounded_trace() -> None:
assert result.trace_start == 0
assert result.trace is not None
assert result.trace[0]["node_id"] == "constant"
assert result.trace[0]["step_number"] == 1
+2
View File
@@ -65,6 +65,7 @@ class _Port:
"frame_id": "root",
"node_id": "approve",
"step_type": "node",
"step_number": 1,
"resolved_input": {},
"outcome": "ok",
"next_node_id": "__end__",
@@ -101,6 +102,7 @@ async def test_interrupted_run_resumes_and_reads_bounded_trace() -> None:
assert trace.start == 0
assert trace.limit == 25
assert len(trace.frames) == 1
assert trace.frames[0].step_number == 1
@pytest.mark.asyncio
+23
View File
@@ -1199,6 +1199,7 @@ async def test_rpc_runs_deployment_and_reads_bounded_trace(tmp_path) -> None:
assert trace["result"]["trace_start"] == 0
assert trace["result"]["trace_limit"] == 1
assert len(trace["result"]["trace"]) == 1
assert trace["result"]["trace"][0]["step_number"] == 1
async def test_rpc_run_list_method(tmp_path) -> None:
@@ -2309,6 +2310,28 @@ async def test_rpc_runs_start_rejects_non_positive_step_budget(tmp_path) -> None
assert rejected["error"]["code"] == -32602
@pytest.mark.parametrize("max_steps", [True, "5"])
async def test_rpc_runs_start_rejects_non_integer_step_budget(
tmp_path, max_steps: object
) -> None:
server = build_local_static_workflow_server(tmp_path / "store")
deployment_id = await _seed_step_budget_deployment(server)
app = create_rpc_app(server)
transport = httpx.ASGITransport(app=app)
async with httpx.AsyncClient(transport=transport, base_url="http://test") as client:
rejected = await _rpc(
client,
"workflow.runs.start",
{
"deployment_id": deployment_id,
"workflow_input": {},
"max_steps": max_steps,
},
)
assert rejected["error"]["code"] == -32602
async def test_rpc_runs_resume_rejects_step_budget_replacement(tmp_path) -> None:
server = build_local_static_workflow_server(tmp_path / "store")
app = create_rpc_app(server)