Changelog#

WayFlow 26.1.0#

Improvements#

  • Connection persistence for MCP servers:

    MCP client sessions are now reused which improves MCP calls latency and enables uses where maintaining a session is required.

    This does not require any change to existing assistants or execution loops.

Possibly Breaking Changes#

  • Removed deprecated Agent/Flow.execute:

    Removed the deprecated method of Agent/Flow.execute(conversation) in favor of conversation.execute().

  • Removed deprecated ChatHistoryContextProvider:

    Removed the deprecated ChatHistoryContextProvider in favor of FlowContextProvider with a Flow with GetChatHistoryStep.

  • Removed deprecated begin_step_name parameter of Flow:

    Removed the deprecated parameter begin_step_name of the Flow class. Please use begin_step, passing in a Step object instead.

  • Enforce valid tool names:

    When creating any type of Tool, its name field must not contain whitespaces or special characters, so that LLM APIs do not return errors. See bug fix below.

    • For now, a deprecation warning is raised; in the next cycle, an error will be thrown.

Bug fixes#

  • Default values in tools outputs were ignored:

    Fixed a bug where if tools had multiple output descriptors with default values set for some of them, these defaults were ignored and not set in the tool result if the tool execution did not produce a value for them. Tools that have a single output still ignore its default, as a return value is always assumed to be produced by the tool (possibly None).

  • Some Agent and Flow names could cause issues when used in multi-agent patterns:

    Fixed a bug where Agents or Flows, whose name contains whitespaces or special characters, would crash upon sending a request to the LLM provider

    • The cause was that internally, WayFlow converted a subagent of an Agent into a Tool, which is then converted to a JSON payload to submit to the LLM provider, which then returns an HTTP error if the tool’s name does not match a regex.

    • Now, users may specify arbitrary names for Agents and Flows. Internally, when creating Tools out of subagents and subflows, their names would be sanitized.

WayFlow 25.4.2#

New features#

  • Agent Spec structured generation: Open Agent Specification introduced Structured Generation in version 25.4.2. Support for this new Agent Spec feature was added in converters.

    For more information check out the how-to guide on Structured Generation

  • Added Tool Confirmation before Execution: Introduced a requires_confirmation flag to the base Tool Class. When enabled, this flag will pause tool execution and emit a ToolExecutionConfirmationStatus, requiring explicit user confirmation before proceeding. During confirmation, users may edit the tool’s arguments or provide a rejection reason. The tool executes only after confirmation is granted.

    For more information check out the corresponding how-to guide

  • Added SplitPromptOnMarkerMessageTransform: Introduced a new Message Transform specialization that splits prompts on a marker into multiple messages with the same role.

    We thank @richl9 for the contribution!

Bug fixes#

  • Flow input and output descriptors

    Fixed a bug where Flow input and output descriptors were sometimes ignored:

    • All the inputs required by the steps that compose the Flow were used instead of the input descriptors provided.

    • The intersection of all the outputs generated by any branch in the Flow was used instead of the output descriptors provided.

    The behavior is now:

    • Input descriptors can now be a subset of all the inputs required by the steps that compose the Flow, as long as the missing step inputs have a default value.

    • Output descriptors can be a subset of the intersection of all the outputs generated by any branch in the Flow. This is now correctly reflected also in other parts of the package.

  • Datastore validation

    Fixed a bug which might cause OracleDatabaseDatastore to raise an exception due to concurrent changes and unsupported data types on unrelated parts of the schema, i.e., tables and columns that are not included in the datastore schema itself.

Miscellaneous#

Improvements#

  • Use execution statuses to interact with the components Users can now directly see the conversation state and interact with the agent via the execution status.

    agent = Agent(...)
    tools_dict = {...}
    
    conversation: Conversation = agent.start_conversation()
    
    while True:
        status = conversation.execute()
    
        if isintance(status, UserMessageRequestStatus):
            print('Agent >> ', status.message.content)
            user_response = input('User >> ')
            status.submit_user_response(user_response)
        elif isinstance(status, ToolRequestStatus):
            for tool_request in status.tool_requests:
                tool_result = ToolResult(
                    tool_id=tool_request.tool_request_id,
                    content=tools_dict[tool_request.name](**tool_request.args)
                )
                status.submit_tool_result(tool_result)
        elif isinstance(status, FinishedStatus):
            break
    

    For more information check out Reference Sheet

WayFlow 25.4.1 — Initial release#

WayFlow is here: Build advanced AI-powered assistants with ease!

With this release, WayFlow provides all you need for building AI-powered assistants, supporting structured workflows, autonomous agents, multi-agent collaboration, human-in-the-loop capabilities, and tool-based extensibility. Modular design ensures you can rapidly build, iterate, and customize both simple and complex assistants for any task.

Explore further: