feat: add cap call rpc command

This commit is contained in:
lda
2026-06-08 22:02:46 +07:00 Verified
parent c39d361873
commit 44407e8de2
9 changed files with 134 additions and 2 deletions
+2
View File
@@ -5,6 +5,7 @@ from .client import RpcWorkflowApiClient
from .errors import WorkflowRpcError
from .models import (
AdminEmptyParams,
CallCapabilityParams,
CreateArtifactFromWorkspaceParams,
CreateDraftFromCapabilityParams,
CreateWrapperFromWorkspaceParams,
@@ -37,6 +38,7 @@ from .models import (
__all__ = [
"CreateArtifactFromWorkspaceParams",
"AdminEmptyParams",
"CallCapabilityParams",
"CreateDraftFromCapabilityParams",
"CreateWrapperFromWorkspaceParams",
"DeleteDeploymentParams",
@@ -31,3 +31,19 @@ class RpcCapabilityClientMixin:
"workflow.capabilities.inspect",
{"qualified_name": qualified_name},
)
async def call_capability(
self,
*,
qualified_name: str,
payload: dict[str, Any],
deployment_id: str | None = None,
) -> dict[str, Any]:
return await self._call(
"workflow.capabilities.call",
{
"qualified_name": qualified_name,
"payload": payload,
"deployment_id": deployment_id,
},
)
@@ -7,7 +7,11 @@ import fastapi_jsonrpc as jsonrpc
from wf_server import WorkflowServer
from ..errors import WorkflowRpcError, raise_workflow_rpc_error
from ..models import InspectCapabilityParams, ListCapabilitiesParams
from ..models import (
CallCapabilityParams,
InspectCapabilityParams,
ListCapabilitiesParams,
)
from ..params import RpcParams
@@ -41,3 +45,16 @@ def register_methods(
)
except (ValueError, KeyError, LookupError, FileNotFoundError) as exc:
raise_workflow_rpc_error(exc)
@entrypoint.method(name="workflow.capabilities.call", errors=[WorkflowRpcError])
async def workflow_capabilities_call(
params: CallCapabilityParams = RpcParams(),
) -> dict[str, Any]:
try:
return await server.api.call_capability(
qualified_name=params.qualified_name,
payload=params.payload,
deployment_id=params.deployment_id,
)
except (ValueError, KeyError, LookupError, FileNotFoundError) as exc:
raise_workflow_rpc_error(exc)
+6
View File
@@ -54,6 +54,12 @@ class InspectCapabilityParams(RpcParamsModel):
qualified_name: str = Field(min_length=1)
class CallCapabilityParams(RpcParamsModel):
qualified_name: str = Field(min_length=1)
payload: dict[str, Any] = Field(default_factory=dict)
deployment_id: str | None = None
class CreateDraftFromCapabilityParams(RpcParamsModel):
workspace_id: str = Field(min_length=1)
capability_name: str = Field(min_length=1)