feat: add focused draft remove commands
This commit is contained in:
@@ -286,6 +286,39 @@ class AddStepFromCapabilityRequest(BaseModel):
|
||||
)
|
||||
|
||||
|
||||
class RemoveDraftRouteRequest(BaseModel):
|
||||
"""Typed MCP request for removing one route from a draft step."""
|
||||
|
||||
workspace_id: WorkspaceId
|
||||
revision: int = Field(ge=1, description="Expected current workspace revision.")
|
||||
step_id: str = Field(description="Draft step id whose route should be removed.")
|
||||
outcome: str = Field(description="Outcome label to remove from the step route map.")
|
||||
|
||||
|
||||
class RemoveDraftStepRequest(BaseModel):
|
||||
"""Typed MCP request for removing a draft step and its outgoing routes."""
|
||||
|
||||
workspace_id: WorkspaceId
|
||||
revision: int = Field(ge=1, description="Expected current workspace revision.")
|
||||
step_id: str = Field(description="Draft step id to remove.")
|
||||
|
||||
|
||||
class RemoveDraftBindingRequest(BaseModel):
|
||||
"""Typed MCP request for removing input/output bindings from a draft step."""
|
||||
|
||||
workspace_id: WorkspaceId
|
||||
revision: int = Field(ge=1, description="Expected current workspace revision.")
|
||||
step_id: str = Field(description="Draft step id whose bindings should be removed.")
|
||||
inputs: list[str] = Field(
|
||||
default_factory=list,
|
||||
description="Local input target names to remove.",
|
||||
)
|
||||
outputs: list[str] = Field(
|
||||
default_factory=list,
|
||||
description="Local output source names to remove.",
|
||||
)
|
||||
|
||||
|
||||
class BranchDraftRequest(BaseModel):
|
||||
"""Typed MCP request for branching routes on a draft step."""
|
||||
|
||||
|
||||
@@ -29,6 +29,9 @@ from .models import (
|
||||
DraftWorkspaceResult,
|
||||
HandleDraftRequest,
|
||||
PatchDraftWorkspaceRequest,
|
||||
RemoveDraftBindingRequest,
|
||||
RemoveDraftRouteRequest,
|
||||
RemoveDraftStepRequest,
|
||||
RunDeploymentResult,
|
||||
SetDraftNameRequest,
|
||||
SetDraftRouteRequest,
|
||||
@@ -543,6 +546,67 @@ def register_workflow_tools(server: FastMCP[Any], service: WfMcpService) -> None
|
||||
)
|
||||
)
|
||||
|
||||
@server.tool(
|
||||
name="wf.workflow.remove_draft_route",
|
||||
title="Remove Draft Route",
|
||||
description=(
|
||||
"Remove one route from a draft step. Missing routes are safe no-ops. "
|
||||
"Removal may return status: invalid; validate after cleanup."
|
||||
),
|
||||
)
|
||||
async def remove_draft_route(
|
||||
request: RemoveDraftRouteRequest,
|
||||
) -> DraftWorkspaceResult:
|
||||
return DraftWorkspaceResult.model_validate(
|
||||
await handlers.remove_draft_route(
|
||||
workspace_id=request.workspace_id,
|
||||
revision=request.revision,
|
||||
step_id=request.step_id,
|
||||
outcome=request.outcome,
|
||||
)
|
||||
)
|
||||
|
||||
@server.tool(
|
||||
name="wf.workflow.remove_draft_step",
|
||||
title="Remove Draft Step",
|
||||
description=(
|
||||
"Remove a step and its outgoing route map from a draft workspace. "
|
||||
"Inbound routes remain explicit. Use remove_draft_route to clean them up."
|
||||
),
|
||||
)
|
||||
async def remove_draft_step(
|
||||
request: RemoveDraftStepRequest,
|
||||
) -> DraftWorkspaceResult:
|
||||
return DraftWorkspaceResult.model_validate(
|
||||
await handlers.remove_draft_step(
|
||||
workspace_id=request.workspace_id,
|
||||
revision=request.revision,
|
||||
step_id=request.step_id,
|
||||
)
|
||||
)
|
||||
|
||||
@server.tool(
|
||||
name="wf.workflow.remove_draft_binding",
|
||||
title="Remove Draft Binding",
|
||||
description=(
|
||||
"Remove selected input/output bindings from one draft step. "
|
||||
"Pass inputs and/or outputs lists to identify bindings by target/source name. "
|
||||
"Removal may return status: invalid; validate after cleanup."
|
||||
),
|
||||
)
|
||||
async def remove_draft_binding(
|
||||
request: RemoveDraftBindingRequest,
|
||||
) -> DraftWorkspaceResult:
|
||||
return DraftWorkspaceResult.model_validate(
|
||||
await handlers.remove_draft_binding(
|
||||
workspace_id=request.workspace_id,
|
||||
revision=request.revision,
|
||||
step_id=request.step_id,
|
||||
inputs=request.inputs,
|
||||
outputs=request.outputs,
|
||||
)
|
||||
)
|
||||
|
||||
@server.tool(
|
||||
name="wf.workflow.create_minimal_draft_workspace",
|
||||
title="Create Minimal Draft Workspace",
|
||||
|
||||
Reference in New Issue
Block a user