feat: expose workflow runs over json rpc
This commit is contained in:
@@ -12,10 +12,14 @@ from .errors import WorkflowRpcError, raise_workflow_rpc_error
|
||||
from .models import (
|
||||
CreateDraftFromCapabilityParams,
|
||||
InspectCapabilityParams,
|
||||
InspectRunParams,
|
||||
ListCapabilitiesParams,
|
||||
PatchDraftParams,
|
||||
ReadRunTraceParams,
|
||||
ResumeRunParams,
|
||||
SaveArtifactParams,
|
||||
SaveDeploymentParams,
|
||||
StartRunParams,
|
||||
ValidateDeploymentParams,
|
||||
ValidateDraftParams,
|
||||
)
|
||||
@@ -138,5 +142,61 @@ def create_rpc_app(server: WorkflowServer) -> jsonrpc.API:
|
||||
except (ValueError, KeyError, LookupError, FileNotFoundError) as exc:
|
||||
raise_workflow_rpc_error(exc)
|
||||
|
||||
@entrypoint.method(name="workflow.runs.start", errors=[WorkflowRpcError])
|
||||
async def workflow_runs_start(
|
||||
params: StartRunParams = Params(...),
|
||||
) -> dict[str, Any]:
|
||||
try:
|
||||
return await server.api.run_deployment(
|
||||
deployment_id=params.deployment_id,
|
||||
workflow_input=params.workflow_input,
|
||||
trace_range=(
|
||||
params.trace_range.to_api_trace_range()
|
||||
if params.trace_range is not None
|
||||
else None
|
||||
),
|
||||
)
|
||||
except (ValueError, KeyError, LookupError, FileNotFoundError) as exc:
|
||||
raise_workflow_rpc_error(exc)
|
||||
|
||||
@entrypoint.method(name="workflow.runs.inspect", errors=[WorkflowRpcError])
|
||||
async def workflow_runs_inspect(
|
||||
params: InspectRunParams = Params(...),
|
||||
) -> dict[str, Any]:
|
||||
try:
|
||||
return await server.api.inspect_run(run_id=params.run_id)
|
||||
except (ValueError, KeyError, LookupError, FileNotFoundError) as exc:
|
||||
raise_workflow_rpc_error(exc)
|
||||
|
||||
@entrypoint.method(name="workflow.runs.trace", errors=[WorkflowRpcError])
|
||||
async def workflow_runs_trace(
|
||||
params: ReadRunTraceParams = Params(...),
|
||||
) -> dict[str, Any]:
|
||||
try:
|
||||
return await server.api.read_run_trace(
|
||||
run_id=params.run_id,
|
||||
trace_range=params.trace_range.to_api_trace_range(),
|
||||
)
|
||||
except (ValueError, KeyError, LookupError, FileNotFoundError) as exc:
|
||||
raise_workflow_rpc_error(exc)
|
||||
|
||||
@entrypoint.method(name="workflow.runs.resume", errors=[WorkflowRpcError])
|
||||
async def workflow_runs_resume(
|
||||
params: ResumeRunParams = Params(...),
|
||||
) -> dict[str, Any]:
|
||||
try:
|
||||
return await server.api.resume_run(
|
||||
run_id=params.run_id,
|
||||
resume_payload=params.resume_payload,
|
||||
resume_outcome=params.resume_outcome,
|
||||
trace_range=(
|
||||
params.trace_range.to_api_trace_range()
|
||||
if params.trace_range is not None
|
||||
else None
|
||||
),
|
||||
)
|
||||
except (ValueError, KeyError, LookupError, FileNotFoundError) as exc:
|
||||
raise_workflow_rpc_error(exc)
|
||||
|
||||
app.bind_entrypoint(entrypoint)
|
||||
return app
|
||||
|
||||
Reference in New Issue
Block a user