pub struct WorkflowPromptHandler { /* private fields */ }Available on non-WebAssembly only.
Expand description
PromptHandler implementation for SequentialWorkflow
Executes workflow steps server-side during prompts/get and returns a conversation trace
showing the complete execution flow.
§Example
ⓘ
use pmcp::Server;
use pmcp::server::workflow::{SequentialWorkflow, WorkflowStep, ToolHandle};
let workflow = SequentialWorkflow::new(
"add_task",
"Add a task to a project"
)
.argument("project", "Project name", true)
.argument("task", "Task description", true)
.step(
WorkflowStep::new("list_pages", ToolHandle::new("list_pages"))
.bind("pages")
);
let server = Server::builder()
.name("server")
.version("1.0.0")
.tool("list_pages", /* tool handler */)
.prompt_workflow(workflow)?
.build()?;Implementations§
Source§impl WorkflowPromptHandler
impl WorkflowPromptHandler
Sourcepub fn new(
workflow: SequentialWorkflow,
tools: HashMap<Arc<str>, ToolInfo>,
tool_handlers: HashMap<Arc<str>, Arc<dyn ToolHandler>>,
resource_handler: Option<Arc<dyn ResourceHandler>>,
) -> Self
pub fn new( workflow: SequentialWorkflow, tools: HashMap<Arc<str>, ToolInfo>, tool_handlers: HashMap<Arc<str>, Arc<dyn ToolHandler>>, resource_handler: Option<Arc<dyn ResourceHandler>>, ) -> Self
Create a new workflow prompt handler with tool handlers (for testing/legacy)
§Arguments
workflow- The workflow definition (should be validated before passing)tools- Tool registry for metadatatool_handlers- Actual tool handlers for execution (bypasses middleware)resource_handler- Resource handler for fetching resource content
Sourcepub fn with_middleware_executor(
workflow: SequentialWorkflow,
tools: HashMap<Arc<str>, ToolInfo>,
middleware_executor: Arc<dyn MiddlewareExecutor>,
resource_handler: Option<Arc<dyn ResourceHandler>>,
) -> Self
pub fn with_middleware_executor( workflow: SequentialWorkflow, tools: HashMap<Arc<str>, ToolInfo>, middleware_executor: Arc<dyn MiddlewareExecutor>, resource_handler: Option<Arc<dyn ResourceHandler>>, ) -> Self
Create a new workflow prompt handler with middleware executor (production)
This constructor uses the middleware executor, ensuring that all middleware (OAuth, logging, authorization, etc.) is applied to tool executions within workflows.
§Arguments
workflow- The workflow definition (should be validated before passing)tools- Tool registry for metadatamiddleware_executor- Middleware executor for tool execution with full middleware chainresource_handler- Resource handler for fetching resource content
Trait Implementations§
Source§impl Debug for WorkflowPromptHandler
impl Debug for WorkflowPromptHandler
Source§impl PromptHandler for WorkflowPromptHandler
impl PromptHandler for WorkflowPromptHandler
Source§fn handle<'life0, 'async_trait>(
&'life0 self,
args: HashMap<String, String>,
extra: RequestHandlerExtra,
) -> Pin<Box<dyn Future<Output = Result<GetPromptResult>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn handle<'life0, 'async_trait>(
&'life0 self,
args: HashMap<String, String>,
extra: RequestHandlerExtra,
) -> Pin<Box<dyn Future<Output = Result<GetPromptResult>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Generate a prompt with the given arguments.
Source§fn metadata(&self) -> Option<PromptInfo>
fn metadata(&self) -> Option<PromptInfo>
Get prompt metadata including description and arguments schema.
Returns None to use default empty metadata.
Auto Trait Implementations§
impl !RefUnwindSafe for WorkflowPromptHandler
impl !UnwindSafe for WorkflowPromptHandler
impl Freeze for WorkflowPromptHandler
impl Send for WorkflowPromptHandler
impl Sync for WorkflowPromptHandler
impl Unpin for WorkflowPromptHandler
impl UnsafeUnpin for WorkflowPromptHandler
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more