draft verification MCP

This commit is contained in:
lda
2026-05-19 06:25:29 +07:00 Verified
parent 5ed89350a9
commit 760207038f
8 changed files with 78 additions and 3 deletions
+1
View File
@@ -46,6 +46,7 @@ _SEARCH_ALWAYS_VISIBLE_TOOL_NAMES = [
"wf.workflow.get_draft_workspace",
"wf.workflow.delete_draft_workspace",
"wf.workflow.patch_draft_workspace",
"wf.workflow.validate_draft_workspace",
"wf.workflow.set_draft_name",
"wf.workflow.set_draft_route",
"wf.workflow.set_step_input_map",
+14
View File
@@ -419,6 +419,20 @@ class WorkflowSurfaceHandlers:
"status": "deleted" if deleted else "not_found",
}
async def validate_draft_workspace(self, *, workspace_id: str) -> dict[str, Any]:
"""Refresh stored validation status without changing draft revision."""
store = self._draft_store()
workspace = store.get_workspace(workspace_id)
validation = await self.validate_draft(draft=workspace.draft)
refreshed = workspace.model_copy(
update={
"status": validation["status"],
"diagnostics": validation["diagnostics"],
}
)
store.save_workspace(refreshed)
return get_draft_workspace_record(store, workspace_id=workspace_id)
async def patch_draft_workspace(
self,
*,
+6
View File
@@ -115,6 +115,12 @@ class PatchDraftWorkspaceRequest(BaseModel):
patch: JsonPatchOperations
class ValidateDraftWorkspaceRequest(BaseModel):
"""Typed MCP request for refreshing one workspace validation status."""
workspace_id: WorkspaceId
class SetDraftNameRequest(BaseModel):
"""Typed MCP request for changing the workflow draft name."""
+16
View File
@@ -23,6 +23,7 @@ from .models import (
SetDraftRouteRequest,
SetStepInputMapRequest,
SetStepOutputMapRequest,
ValidateDraftWorkspaceRequest,
)
@@ -277,6 +278,21 @@ def register_workflow_tools(server: FastMCP[Any], service: WfMcpService) -> None
)
)
@server.tool(
name="wf.workflow.validate_draft_workspace",
title="Validate Draft Workspace",
description=(
"Refresh validation status for one draft workspace without changing "
"its revision."
),
)
async def validate_draft_workspace(
request: ValidateDraftWorkspaceRequest,
) -> DraftWorkspaceResult:
return DraftWorkspaceResult.model_validate(
await handlers.validate_draft_workspace(workspace_id=request.workspace_id)
)
@server.tool(
name="wf.workflow.set_draft_name",
title="Set Draft Name",