draft verification MCP
This commit is contained in:
@@ -69,6 +69,7 @@ def test_server_exposes_upstream_admin_and_workflow_tools() -> None:
|
||||
assert "wf.workflow.get_draft_workspace" in names
|
||||
assert "wf.workflow.delete_draft_workspace" in names
|
||||
assert "wf.workflow.patch_draft_workspace" in names
|
||||
assert "wf.workflow.validate_draft_workspace" in names
|
||||
assert "wf.workflow.set_draft_name" in names
|
||||
assert "wf.workflow.set_draft_route" in names
|
||||
assert "wf.workflow.set_step_input_map" in names
|
||||
@@ -198,6 +199,7 @@ def test_server_search_mode_pins_stable_control_and_workflow_tools() -> None:
|
||||
assert "wf.workflow.get_draft_workspace" in names
|
||||
assert "wf.workflow.delete_draft_workspace" in names
|
||||
assert "wf.workflow.patch_draft_workspace" in names
|
||||
assert "wf.workflow.validate_draft_workspace" in names
|
||||
assert "wf.workflow.set_draft_name" in names
|
||||
assert "wf.workflow.set_draft_route" in names
|
||||
assert "wf.workflow.set_step_input_map" in names
|
||||
|
||||
@@ -492,6 +492,39 @@ def test_workflow_surface_patch_helpers_update_draft_workspace() -> None:
|
||||
assert fetched["draft"]["steps"]["echo"]["out"] == {"echoed": "state.echoed"}
|
||||
|
||||
|
||||
def test_workflow_surface_validates_draft_workspace_with_live_outcomes() -> None:
|
||||
artifact_store = FileWorkflowArtifactStore(
|
||||
local_temp_root() / "surface_workspace_validate"
|
||||
)
|
||||
service = WfMcpService(
|
||||
store=FileStore(local_temp_root() / "surface_workspace_validate_mcp"),
|
||||
artifact_store=artifact_store,
|
||||
)
|
||||
service.register_connection(
|
||||
ConnectionConfig(id="demo.personal", server="demo", account="personal")
|
||||
)
|
||||
service.register_specs("demo.personal", echo_tool)
|
||||
handlers = WorkflowSurfaceHandlers(service)
|
||||
draft = _echo_draft()
|
||||
draft["routes"]["echo"] = {"typo": "__end__"}
|
||||
asyncio.run(
|
||||
handlers.create_draft_workspace(
|
||||
workspace_id="echo_draft",
|
||||
draft=draft,
|
||||
)
|
||||
)
|
||||
|
||||
payload = asyncio.run(
|
||||
handlers.validate_draft_workspace(workspace_id="echo_draft")
|
||||
)
|
||||
fetched = asyncio.run(handlers.get_draft_workspace(workspace_id="echo_draft"))
|
||||
|
||||
assert payload["revision"] == 1
|
||||
assert payload["status"] == "invalid"
|
||||
assert payload["diagnostics"][0]["code"] == "unknown_outcome"
|
||||
assert fetched["status"] == "invalid"
|
||||
|
||||
|
||||
def test_workflow_surface_patches_draft_workspace_by_revision() -> None:
|
||||
artifact_store = FileWorkflowArtifactStore(
|
||||
local_temp_root() / "surface_workspace_patch"
|
||||
|
||||
Reference in New Issue
Block a user