Skip to content

feat: emit new executing tool call event after any tool confirmation #115

Merged
norman-le merged 6 commits into
mainfrom
feat/jar-9629-executing-tool-call-event-after-confirmation
May 29, 2026
Merged

feat: emit new executing tool call event after any tool confirmation #115
norman-le merged 6 commits into
mainfrom
feat/jar-9629-executing-tool-call-event-after-confirmation

Conversation

@norman-le
Copy link
Copy Markdown
Contributor

@norman-le norman-le commented May 28, 2026

Changes across repos for client-side tools feature:
uipath-python:
- Removed toolName from ExecutingToolCallEvent model. 
- Added client-side tool declaration model on exchange start. 
- Bridge gains emit_executing_tool_call method and wait_for_resume buffering for early responses.

uipath-runtime-python:
- Added emit_executing_tool_call to protocol. 
- Runtime loop emits executingToolCall after tool-call confirmations resume.

uipath-langchain-python:
- Client-side tool factory with @durable_interrupt. Names-only tool filtering via apply_tool_filter. 
- MessageMapper emits executingToolCall for all non-confirmed tools, adds isClientSideTool/outputSchema to startToolCall, suppresses endToolCall for client-side results. 
- Runtime discovers client-side tools through graph introspection. 
- Init node applies per-exchange filtering.

uipath-agents-python:
- Strips client-side tool metadata during evals.

uipath-dev-python:
- Protocol stub for emit_executing_tool_call.

AgentInterfaces:
- Schema updates (ExecutingToolCallEvent, ClientSideToolDeclaration, exchange start). 
- CAS passes client-side tool names to runtime input, forwards confirmToolCall to CLI bridge. 
- React SDK handles executingToolCall for client-side tools.

Videos in CAS localhost (Agent Builder changes already published, but this will be the debug experience as well when the sdk is upgraded):

Without tool confirmation for client side tool:

Screen.Recording.2026-05-13.at.9.32.26.PM.mov

With tool confirmation for client side tool:

Screen.Recording.2026-05-13.at.9.27.56.PM.mov

URT Eval:
image

Related to changes in other PRs:
CAS: https://github.com/UiPath/AgentInterfaces/pull/949
uipath-langchain-python (message mapping and firing executing tool call if no confirmation): UiPath/uipath-langchain-python#856
uipath-python (definitions): UiPath/uipath-python#1638
uipath-agents-python (skipping for evals, so it can be mocked): https://github.com/UiPath/uipath-agents-python/pull/485
uipath-runtime-python (protocol changing to emit executing tool call event after confirmation): #115
Another Agents PR fixing some issues with debug: https://github.com/UiPath/Agents/pull/5250

Copilot AI review requested due to automatic review settings May 28, 2026 15:50
@norman-le norman-le requested a review from a team as a code owner May 28, 2026 15:50
@norman-le norman-le changed the title feat: emit new exeucting tool call event after any tool confirmation to signal client when to perform clientside tools feat: emit new executing tool call event after any tool confirmation May 28, 2026
@norman-le norman-le force-pushed the feat/jar-9629-executing-tool-call-event-after-confirmation branch from e378623 to 9cbd2a8 Compare May 28, 2026 15:53
Copy link
Copy Markdown

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR updates the chat runtime/bridge contract to support a new executingToolCall event emitted after a tool-call confirmation resumes, enabling clients to reliably run client-side tools with the final confirmed input.

Changes:

  • Adds emit_executing_tool_call(tool_call_id, tool_input) to UiPathChatProtocol.
  • Updates UiPathChatRuntime.stream() to emit executingToolCall after a resume payload indicates an approved tool-call confirmation.
  • Extracts the tool_call_id and confirmed input from the API resume request/resume payload before resuming the underlying runtime.

Reviewed changes

Copilot reviewed 2 out of 2 changed files in this pull request and generated 1 comment.

File Description
src/uipath/runtime/chat/runtime.py Emits executingToolCall after approved confirmations so clients can run client-side tools with final inputs.
src/uipath/runtime/chat/protocol.py Extends the chat bridge protocol with emit_executing_tool_call to support the new event.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread src/uipath/runtime/chat/runtime.py Outdated
@norman-le norman-le force-pushed the feat/jar-9629-executing-tool-call-event-after-confirmation branch from 9cbd2a8 to aa9841f Compare May 28, 2026 15:53
Comment thread src/uipath/runtime/chat/protocol.py Outdated
Comment thread src/uipath/runtime/chat/runtime.py Outdated
Comment thread src/uipath/runtime/chat/runtime.py Outdated
@maxduu
Copy link
Copy Markdown
Contributor

maxduu commented May 28, 2026

Oh also looks like SonarCloud failed, maybe you can generate some quick tests. Also needs pyproject/uv.lock bump as well

Comment thread src/uipath/runtime/chat/runtime.py Outdated
@sonarqubecloud
Copy link
Copy Markdown

@norman-le norman-le merged commit 7760d64 into main May 29, 2026
93 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants