feat: add cap call rpc command
This commit is contained in:
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user