feat: add semantic draft authoring operations
This commit is contained in:
@@ -6,13 +6,17 @@ from .errors import WorkflowRpcError
|
||||
from .models import (
|
||||
AddStepFromCapabilityParams,
|
||||
AdminEmptyParams,
|
||||
BranchDraftParams,
|
||||
CallCapabilityParams,
|
||||
CompileDraftWorkspaceParams,
|
||||
CreateArtifactFromPlanParams,
|
||||
CreateArtifactFromWorkspaceParams,
|
||||
CreateDraftFromCapabilityParams,
|
||||
CreateWrapperFromWorkspaceParams,
|
||||
DeleteDeploymentParams,
|
||||
GetDraftWorkspaceParams,
|
||||
HandleDraftBranch,
|
||||
HandleDraftParams,
|
||||
HealthParams,
|
||||
InspectArtifactParams,
|
||||
InspectCapabilityParams,
|
||||
@@ -42,15 +46,19 @@ from .models import (
|
||||
)
|
||||
|
||||
__all__ = [
|
||||
"CreateArtifactFromPlanParams",
|
||||
"CreateArtifactFromWorkspaceParams",
|
||||
"AddStepFromCapabilityParams",
|
||||
"AdminEmptyParams",
|
||||
"BranchDraftParams",
|
||||
"CallCapabilityParams",
|
||||
"CompileDraftWorkspaceParams",
|
||||
"CreateArtifactFromPlanParams",
|
||||
"CreateArtifactFromWorkspaceParams",
|
||||
"CreateDraftFromCapabilityParams",
|
||||
"CreateWrapperFromWorkspaceParams",
|
||||
"DeleteDeploymentParams",
|
||||
"GetDraftWorkspaceParams",
|
||||
"HandleDraftBranch",
|
||||
"HandleDraftParams",
|
||||
"HealthParams",
|
||||
"InspectArtifactParams",
|
||||
"InspectCapabilityParams",
|
||||
|
||||
@@ -141,26 +141,6 @@ class RpcDraftClientMixin:
|
||||
},
|
||||
)
|
||||
|
||||
async def add_state_schema_from_output(
|
||||
self: RpcCaller,
|
||||
*,
|
||||
workspace_id: str,
|
||||
revision: int,
|
||||
step_id: str,
|
||||
output_field: str,
|
||||
state_path: str,
|
||||
) -> dict[str, Any]:
|
||||
return await self._call(
|
||||
"workflow.draft_workspaces.add_state_from_output",
|
||||
{
|
||||
"workspace_id": workspace_id,
|
||||
"revision": revision,
|
||||
"step_id": step_id,
|
||||
"output_field": output_field,
|
||||
"state_path": state_path,
|
||||
},
|
||||
)
|
||||
|
||||
async def bind_output_to_state(
|
||||
self: RpcCaller,
|
||||
*,
|
||||
@@ -190,8 +170,7 @@ class RpcDraftClientMixin:
|
||||
capability_name: str,
|
||||
route_from_step: str | None = None,
|
||||
route_from_outcome: str = "ok",
|
||||
route_outcome: str = "ok",
|
||||
route_to: str = "__end__",
|
||||
routes: dict[str, str] | None = None,
|
||||
input_map: dict[str, str] | None = None,
|
||||
bind_outputs: dict[str, str] | None = None,
|
||||
) -> dict[str, Any]:
|
||||
@@ -204,13 +183,48 @@ class RpcDraftClientMixin:
|
||||
"capability_name": capability_name,
|
||||
"route_from_step": route_from_step,
|
||||
"route_from_outcome": route_from_outcome,
|
||||
"route_outcome": route_outcome,
|
||||
"route_to": route_to,
|
||||
"routes": routes,
|
||||
"input_map": input_map or {},
|
||||
"bind_outputs": bind_outputs or {},
|
||||
},
|
||||
)
|
||||
|
||||
async def branch_draft(
|
||||
self: RpcCaller,
|
||||
*,
|
||||
workspace_id: str,
|
||||
revision: int,
|
||||
step_id: str,
|
||||
routes: dict[str, str],
|
||||
) -> dict[str, Any]:
|
||||
return await self._call(
|
||||
"workflow.draft_workspaces.branch",
|
||||
{
|
||||
"workspace_id": workspace_id,
|
||||
"revision": revision,
|
||||
"step_id": step_id,
|
||||
"routes": routes,
|
||||
},
|
||||
)
|
||||
|
||||
async def handle_draft(
|
||||
self: RpcCaller,
|
||||
*,
|
||||
workspace_id: str,
|
||||
revision: int,
|
||||
branches: list[dict[str, str]],
|
||||
target: str,
|
||||
) -> dict[str, Any]:
|
||||
return await self._call(
|
||||
"workflow.draft_workspaces.handle",
|
||||
{
|
||||
"workspace_id": workspace_id,
|
||||
"revision": revision,
|
||||
"branches": branches,
|
||||
"target": target,
|
||||
},
|
||||
)
|
||||
|
||||
async def validate_draft_workspace(
|
||||
self: RpcCaller,
|
||||
*,
|
||||
@@ -221,6 +235,16 @@ class RpcDraftClientMixin:
|
||||
{"workspace_id": workspace_id},
|
||||
)
|
||||
|
||||
async def compile_draft_workspace(
|
||||
self: RpcCaller,
|
||||
*,
|
||||
workspace_id: str,
|
||||
) -> dict[str, Any]:
|
||||
return await self._call(
|
||||
"workflow.draft_workspaces.compile",
|
||||
{"workspace_id": workspace_id},
|
||||
)
|
||||
|
||||
async def delete_draft_workspace(
|
||||
self: RpcCaller,
|
||||
*,
|
||||
|
||||
@@ -8,14 +8,16 @@ from wf_server import WorkflowServer
|
||||
|
||||
from ..errors import WorkflowRpcError, raise_workflow_rpc_error
|
||||
from ..models import (
|
||||
AddStateFromOutputParams,
|
||||
AddStepFromCapabilityParams,
|
||||
BindOutputToStateParams,
|
||||
BranchDraftParams,
|
||||
CompileDraftWorkspaceParams,
|
||||
CreateArtifactFromWorkspaceParams,
|
||||
CreateDraftFromCapabilityParams,
|
||||
CreateWrapperFromWorkspaceParams,
|
||||
DeleteDraftWorkspaceParams,
|
||||
GetDraftWorkspaceParams,
|
||||
HandleDraftParams,
|
||||
ListDraftWorkspacesParams,
|
||||
PatchDraftParams,
|
||||
PatchDraftWorkspaceParams,
|
||||
@@ -180,24 +182,6 @@ def register_methods(
|
||||
except (ValueError, KeyError, LookupError, FileNotFoundError) as exc:
|
||||
raise_workflow_rpc_error(exc)
|
||||
|
||||
@entrypoint.method(
|
||||
name="workflow.draft_workspaces.add_state_from_output",
|
||||
errors=[WorkflowRpcError],
|
||||
)
|
||||
async def workflow_draft_workspaces_add_state_from_output(
|
||||
params: AddStateFromOutputParams = RpcParams(),
|
||||
) -> dict[str, Any]:
|
||||
try:
|
||||
return await server.api.add_state_schema_from_output(
|
||||
workspace_id=params.workspace_id,
|
||||
revision=params.revision,
|
||||
step_id=params.step_id,
|
||||
output_field=params.output_field,
|
||||
state_path=params.state_path,
|
||||
)
|
||||
except (ValueError, KeyError, LookupError, FileNotFoundError) as exc:
|
||||
raise_workflow_rpc_error(exc)
|
||||
|
||||
@entrypoint.method(
|
||||
name="workflow.draft_workspaces.bind_output_to_state",
|
||||
errors=[WorkflowRpcError],
|
||||
@@ -231,14 +215,48 @@ def register_methods(
|
||||
capability_name=params.capability_name,
|
||||
route_from_step=params.route_from_step,
|
||||
route_from_outcome=params.route_from_outcome,
|
||||
route_outcome=params.route_outcome,
|
||||
route_to=params.route_to,
|
||||
routes=params.routes,
|
||||
input_map=params.input_map,
|
||||
bind_outputs=params.bind_outputs,
|
||||
)
|
||||
except (ValueError, KeyError, LookupError, FileNotFoundError) as exc:
|
||||
raise_workflow_rpc_error(exc)
|
||||
|
||||
@entrypoint.method(
|
||||
name="workflow.draft_workspaces.branch", errors=[WorkflowRpcError]
|
||||
)
|
||||
async def workflow_draft_workspaces_branch(
|
||||
params: BranchDraftParams = RpcParams(),
|
||||
) -> dict[str, Any]:
|
||||
try:
|
||||
return await server.api.branch_draft(
|
||||
workspace_id=params.workspace_id,
|
||||
revision=params.revision,
|
||||
step_id=params.step_id,
|
||||
routes=params.routes,
|
||||
)
|
||||
except (ValueError, KeyError, LookupError, FileNotFoundError) as exc:
|
||||
raise_workflow_rpc_error(exc)
|
||||
|
||||
@entrypoint.method(
|
||||
name="workflow.draft_workspaces.handle", errors=[WorkflowRpcError]
|
||||
)
|
||||
async def workflow_draft_workspaces_handle(
|
||||
params: HandleDraftParams = RpcParams(),
|
||||
) -> dict[str, Any]:
|
||||
try:
|
||||
return await server.api.handle_draft(
|
||||
workspace_id=params.workspace_id,
|
||||
revision=params.revision,
|
||||
branches=[
|
||||
{"step_id": b.step_id, "outcome": b.outcome}
|
||||
for b in params.branches
|
||||
],
|
||||
target=params.target,
|
||||
)
|
||||
except (ValueError, KeyError, LookupError, FileNotFoundError) as exc:
|
||||
raise_workflow_rpc_error(exc)
|
||||
|
||||
@entrypoint.method(
|
||||
name="workflow.draft_workspaces.validate", errors=[WorkflowRpcError]
|
||||
)
|
||||
@@ -252,6 +270,19 @@ def register_methods(
|
||||
except (ValueError, KeyError, LookupError, FileNotFoundError) as exc:
|
||||
raise_workflow_rpc_error(exc)
|
||||
|
||||
@entrypoint.method(
|
||||
name="workflow.draft_workspaces.compile", errors=[WorkflowRpcError]
|
||||
)
|
||||
async def workflow_draft_workspaces_compile(
|
||||
params: CompileDraftWorkspaceParams = RpcParams(),
|
||||
) -> dict[str, Any]:
|
||||
try:
|
||||
return await server.api.compile_draft_workspace(
|
||||
workspace_id=params.workspace_id,
|
||||
)
|
||||
except (ValueError, KeyError, LookupError, FileNotFoundError) as exc:
|
||||
raise_workflow_rpc_error(exc)
|
||||
|
||||
@entrypoint.method(
|
||||
name="workflow.draft_workspaces.delete", errors=[WorkflowRpcError]
|
||||
)
|
||||
|
||||
@@ -141,14 +141,6 @@ class SetStepOutputMapParams(RpcParamsModel):
|
||||
merge: bool = False
|
||||
|
||||
|
||||
class AddStateFromOutputParams(RpcParamsModel):
|
||||
workspace_id: str = Field(min_length=1)
|
||||
revision: int = Field(ge=1)
|
||||
step_id: str = Field(min_length=1)
|
||||
output_field: str = Field(min_length=1)
|
||||
state_path: str = Field(min_length=1)
|
||||
|
||||
|
||||
class BindOutputToStateParams(RpcParamsModel):
|
||||
workspace_id: str = Field(min_length=1)
|
||||
revision: int = Field(ge=1)
|
||||
@@ -164,16 +156,38 @@ class AddStepFromCapabilityParams(RpcParamsModel):
|
||||
capability_name: str = Field(min_length=1)
|
||||
route_from_step: str | None = None
|
||||
route_from_outcome: str = Field(default="ok", min_length=1)
|
||||
route_outcome: str = Field(default="ok", min_length=1)
|
||||
route_to: str = Field(default="__end__", min_length=1)
|
||||
routes: dict[str, str] | None = None
|
||||
input_map: dict[str, str] = Field(default_factory=dict)
|
||||
bind_outputs: dict[str, str] = Field(default_factory=dict)
|
||||
|
||||
|
||||
class BranchDraftParams(RpcParamsModel):
|
||||
workspace_id: str = Field(min_length=1)
|
||||
revision: int = Field(ge=1)
|
||||
step_id: str = Field(min_length=1)
|
||||
routes: dict[str, str]
|
||||
|
||||
|
||||
class HandleDraftBranch(RpcParamsModel):
|
||||
step_id: str = Field(min_length=1)
|
||||
outcome: str = Field(min_length=1)
|
||||
|
||||
|
||||
class HandleDraftParams(RpcParamsModel):
|
||||
workspace_id: str = Field(min_length=1)
|
||||
revision: int = Field(ge=1)
|
||||
branches: list[HandleDraftBranch]
|
||||
target: str = Field(min_length=1)
|
||||
|
||||
|
||||
class ValidateDraftWorkspaceParams(RpcParamsModel):
|
||||
workspace_id: str = Field(min_length=1)
|
||||
|
||||
|
||||
class CompileDraftWorkspaceParams(RpcParamsModel):
|
||||
workspace_id: str = Field(min_length=1)
|
||||
|
||||
|
||||
class DeleteDraftWorkspaceParams(RpcParamsModel):
|
||||
workspace_id: str = Field(min_length=1)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user