list deployment compaction & inspect deployment

This commit is contained in:
lda
2026-05-21 18:44:16 +07:00 Verified
parent abf41677a6
commit 884416dfad
10 changed files with 188 additions and 43 deletions
+19 -1
View File
@@ -819,11 +819,18 @@ class WorkflowSurfaceHandlers:
return {"deployments": []}
return {
"deployments": [
deployment.model_dump(mode="json")
_deployment_summary(deployment)
for deployment in self.service.artifact_store.list_deployments()
]
}
async def inspect_deployment(self, *, deployment_id: str) -> dict[str, Any]:
if self.service.artifact_store is None:
raise KeyError("workflow artifact store is not configured")
return self.service.artifact_store.get_deployment(deployment_id).model_dump(
mode="json"
)
async def save_deployment(self, deployment: dict[str, Any]) -> dict[str, Any]:
if self.service.artifact_store is None:
raise KeyError("workflow artifact store is not configured")
@@ -1262,3 +1269,14 @@ def _run_payload(
payload["trace"] = trace
payload["trace_truncated"] = trace_truncated
return payload
def _deployment_summary(deployment: WorkflowDeployment) -> dict[str, Any]:
"""Return compact deployment metadata for progressive list responses."""
return {
"id": deployment.id,
"artifact_id": deployment.artifact_id,
"artifact_version": deployment.artifact_version,
"binding_count": len(deployment.binding_map()),
"drift_policy": deployment.drift_policy.value,
}
+12 -1
View File
@@ -514,11 +514,22 @@ def register_workflow_tools(server: FastMCP[Any], service: WfMcpService) -> None
@server.tool(
name="wf.workflow.list_deployments",
title="List Workflow Deployments",
description="List saved workflow deployments and their source bindings.",
description=(
"List compact saved workflow deployment summaries. Use "
"inspect_deployment for full source bindings."
),
)
async def list_deployments() -> dict[str, Any]:
return await handlers.list_deployments()
@server.tool(
name="wf.workflow.inspect_deployment",
title="Inspect Workflow Deployment",
description="Return one full workflow deployment including source bindings.",
)
async def inspect_deployment(deployment_id: str) -> dict[str, Any]:
return await handlers.inspect_deployment(deployment_id=deployment_id)
@server.tool(
name="wf.workflow.save_deployment",
title="Save Workflow Deployment",